2012-03-14 267 views
2

为我的项目的一部分,我需要能够添加这些括号内的数字,我一直在努力太久,但没有结果,我想感谢所有帮助查找号码括号内

String[] s = "1 2 3 (4 5 6) * 1000 7 8".split("\\s"); 

例如,在这种情况下,有3个数字

这是我到目前为止有:

while(st.hasMoreTokens()) { 
    if (st.nextToken() != "(") 
     count = count +1 ; 
} 
if (st.nextToken() == "(") 
    while (st.nextToken() != ")") { 
     count2 = count2 + 1; 
    } 
System.out.println(count); System.out.println(count2); 
} 
+4

向我们展示您迄今为止所做的工作。 – Tim 2012-03-14 01:48:12

+0

向我们显示您的代码。 – jefflunt 2012-03-14 01:49:30

+1

你有我们的许可,首先尝试自己做这个。 – 2012-03-14 01:50:15

回答

2

不太在这里得到的使用情况。假设你总是只有一组paranthesis [“(”和“)”],那么永远不会有palenthesis不匹配,你不关心palenthesis之外的其他数字/数字/运算符,简单的方法添加paranthesis之间的数字将是

String mainStr = "1 2 3 (4 5 6) * 1000 7 8"; 
String []inside = mainStr.substring(mainStr.indexOf("(")+1, mainStr.indexOf(")") 
        .split("\s"); 
int sum = 0; 
int innerNum = 0; 
for (int i=0; i<inside.length;i++) { 
    try { 
     innerNum = Integer.parseInt(inside[i]); 
    } catch (NumberFormatException e) { 
     innerNum = 0; 
    } 
    sum = sum + innerNum; 
} 
return sum; 

多套paranthesis的(不是嵌套的),我们可以遍历mainStr获得下一集,并在相同的方式

1

如果你想继续为了跟踪括号并将您的字符串评估为一个等式,您可能需要查看调车码算法。