作为我项目的一部分,我需要能够在这些括号内添加数字,我一直在研究它太长但没有结果,我会感激任何帮助
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);
}
答案 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)
如果你想跟踪括号并将你的字符串作为方程式进行评估,你可能需要查看分流码算法。