0

まず、EXPRESSION は "2 + 3 * 5" であり、POSTFIX 式は 2 3 5 * であることに注意してください +
これは、後置式を持つスタックから演算子とオペランドを抽出するために作成したメソッドです。そして全体を評価します。

// This method evaluates the postFix expression
public void evaluateRPN() {

    int t1 = 0,
        t2 = 0,
        calculation = 0;
    String oper;

    double result;

    // Empty stack  
    Stack stack = new Stack();

    // Tokenize expression
    Scanner scan = new Scanner(this.postfix);
    char current;

    while ( scan.hasNext() ) {

        String token = scan.next();     

        if ( this.isNumber(token) ) { // if the token is an operand, push it onto the stack

            stack.push(token);


        } else {        // If the token is an operator          

            t1 = (char) stack.pop();
            t2 = (char) stack.pop();                

            calculation = (int) evalEx(t2, token, t1 );
            stack.push(calculation);    

        }

    }

    this.finalExpression = (String) stack.pop();

}

このコードを実行すると、次の行にエラーが表示されます: t1 = (char) stack.pop(); ここで、スタックから最初の要素をポップし始めます。また、 evalEx() メソッドはすでに別の場所で宣言されており、正常に機能します。だから私の質問は、ここで何が欠けているのですか? (else) 部分で try/catch を使用する必要があることはわかっていますが、それが問題だとは思いません。ありがとうございます!

4

1 に答える 1