当前方法 "evaluatePostfix" 运行 但打印出错误结果 (java)

Current method "evaluatePostfix" running but printing out false results (java)

我已经编写了我的代码,它是一个使用堆栈的链表。该程序采用中缀形式并将其转换为后缀,目前正在输出(使用我的输入和输出文件)正确的转换。但是,我不明白如何让 evaluatePostFix 方法正常工作。我的问题是打印出错误的结果,我不知道为什么。感谢您的帮助!

我当前的 evaluatePostfix 方法:

 public static int evaluatePostfix(String postfix) {
        
     
        Stack<Integer> stack = new Stack<>(); 

        Stack<Character> operatorStack = new Stack<>();
        
        int count = 0;
        int operandTwo = '0';
        int operandOne = '0';
        
      while (count < postfix.length() && count >= 0) {
          
          char nextCharacter = postfix.charAt(count);
          
            switch(nextCharacter) {
                    case '^':
                        operatorStack.push (nextCharacter);
                        break;
                    case '+':
                        stack.push(operandTwo + operandOne);
                    case '-':
                        stack.push(operandTwo - operandOne);
                    case '*':
                        stack.push(operandTwo * operandOne);
                    case '/':
                        stack.push(operandTwo / operandOne);
                       
                int result1 = nextCharacter;
                stack.push(result1); 
                break;
                
           default: break;
          
            } //End switch
            
            count = count + 1;
        } //End while
 
        //return stack.pop();
        return stack.peek();
    } //End evaluatePostfix
case '+':
     stack.push(operandTwo + operandOne);

case '-':
     stack.push(operandTwo - operandOne);
  • 你会希望在其中有一个 break 语句以避免落入下一个 case 块。

  • 您需要先 pop 这两个操作数离开您的堆栈,否则您将无法访问它们的值(并且它们也保留在堆栈中)。

  • 一般来说,要调试这种代码,有用的工具是使用调试器单步调试、插入 println 语句、编写单元测试以及在一张纸上推理流程和变量状态。