Postfix Evaluator无法使用指数

时间:2019-05-17 01:47:06

标签: java

我被分配了一个作业问题,即将infix表达式转换为后缀表达式,然后评估后缀。

我的代码可根据给定的表达式将中缀转换为后缀,即((((1 + 2)-(3-4))/(6-5))中缀变为1 2 + 3 4--6 5-/

和2 * 4-2 ^ 2 ^ 1变成2 4 * 2 2 1 ^ ^-这在我的程序中有效

public class PostfixEvaluator {
        PostfixEvaluator(){
            //empty initializer
        }
        MyStack stack1 = new MyStack();
        public int evaluate(String s){
            //s = s.replaceAll("\\s", "");//error handling by getting rid of whitespaces
            for(int i = 0; i < s.length(); i++) {
                char ch = s.charAt(i);
                if(Character.isDigit(ch)) {
                    stack1.push(Integer.parseInt(String.valueOf(ch)));//can only put int's in otherwise it'll 
                                                                        //crash when we cast the return later
                }
                else {
                    int right = (int)stack1.pop();
                    int left = (int)stack1.pop();
                    switch(ch) {
                        case '+':
                            stack1.push((int)(left+right));
                        break;
                        case '-':
                            stack1.push((int)(left-right));
                        break;
                        case '*':
                            stack1.push((int)(left*right));
                        break;
                        case '/':
                            stack1.push((int)(left/right));
                        break;
                        case '^':
                            stack1.push((int)(left^right));
                        break;
                    }//switch
                }//else

            }//for loop
        return (int)stack1.pop();
    }//evaluate
}//class


给出的两个后缀表达式的输出应为4

1 2 + 3 4--6 5-/此后缀的计算结果为4

2 4 * 2 2 1 ^ ^-此后缀在我的程序中计算为7 我试图弄清楚为什么第二个不起作用

0 个答案:

没有答案