[英]Evaluating Expression in java
我无法输出。 但一定有可能。 当我在编辑器中检查时,它表明该情况始终为真,即最后三个切换状态。
public String isPossible(String express) {
char a = ' ';
char b = ' ';
boolean flag = true;
Stack<Character> pile = new Stack<Character>();
char [] array = express.toCharArray();
for (int i = 0 ; i < array.length ; i++) {
a = array[i];
switch (a) {
case '(':
pile.push(a);
break;
case '{':
pile.push(a);
break;
case '[':
pile.push(a);
break;
case ')':
b = pile.pop();
if (b != '(' || b != 'X')
flag = false;
break;
case '}':
b = pile.pop();
if (b != '{' || b != 'X')
flag = false;
break;
case ']':
b = pile.pop();
if (b != ']' || b != 'X')
flag = false;
break;
}
}
if (flag == false || pile.size() % 2 != 0)
return "impossible";
else
return "possible";
}
public static void main(String args[]) {
Merge a = new Merge();
System.out.println(a.isPossible("(())"));
}
您的逻辑错误地使用了||
(或)运算符。 b
不是'('
或不是'X'
总是正确的,您想要&&
(和)。
更换
if(b!='(' || b!= 'X')
与
if(b!='(' && b!= 'X')
对于case语句中的其他if
条件,也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.