繁体   English   中英

用Java评估表达式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM