在括号内找到数字

时间:2012-03-14 01:45:12

标签: java

作为我项目的一部分,我需要能够在这些括号内添加数字,我一直在研究它太长但没有结果,我会感激任何帮助

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);
}

2 个答案:

答案 0 :(得分:2)

这里没有得到用例。假设你总是只有一套paranthesis [“(”和“)”],那么永远不会有paranthesis不匹配,你不关心paranthesis之外的其他数字/数字/运算符,简单的方法在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 :(得分:1)

如果你想跟踪括号并将你的字符串作为方程式进行评估,你可能需要查看分流码算法。