2012-12-10 100 views
0

我有这个输入 “4 + 4-(4 + 4 +(4 + 4)))” 中的字符串 “余额阵列”不等于在Java

我试图执行该代码的阵列:

String expression = ""; 
for(int j=2 ; j<balance.length-1 ; j++) 
{ 
    if(!(balance[j].equals("+")) || !(balance[j].equals("-")) || !(balance[j].equals("(")) || !(balance[j].equals(")"))) 
      expression = expression + balance[j]; 
} 

在代码的末尾,表达式应该包含“444444”,但它不起作用。

我使用了!.equals事情&的||错误的方式?

我想用这些语句4相结合||它们之间。

+0

有什么'balance'数组,那么的确切类型和内容是什么?如果你正在迭代它,它不应该只是你提到的一个字符串。你有没有尝试在调试器中逐句通过你的代码? – millimoose

+1

你为什么从第二个索引开始? – PermGenError

+0

你应该使用[regex](http://www.vogella.com/articles/JavaRegularExpressions/article.html)代替 - 模式匹配会更容易理解和修改。 – Jeff

回答

0

使用

if(!((balance[j].equals("+")) || (balance[j].equals("-")) || (balance[j].equals("(")) || (balance[j].equals(")")))) 

for(int j=0 ; j<=balance.length-1 ; j++) 
+0

伙计,我没有使用J = 0,因为它有一个空间作为一个字符串 ,因为它有(我想删除我没有使用J = 1 .. 所以我更喜欢j = 2 ..得到我? 第一个代码u张贴看起来更自然,似乎工作,因为我想..我会检查它然后我发布答案 谢谢 –

+0

嗯... 这是有道理的 –

+0

它的工作..谢谢你 –

7

改变所有的||&&

 if (!balance[j].equals("+") && !balance[j].equals("-") && 
     !balance[j].equals("(") && !balance[j].equals(")")) 

而且,两者的j起始值和循环的终止条件看起来前途未卜。