[アルゴリズム – ジャワ] 表現の接尾辞の値を計算する – 後置式の値を計算する
従来のコンピュータの中央要素として数式の値の計算は、逆ポーランド記法に変換されます (接尾辞) その計算は簡単です。. あなたは、アルゴリズムを見直すことができます 接尾辞に中置からの変換 私の記事で. この記事では、, 私は、スタックによって表現プレフィックスの値と接尾辞を算出する方法を紹介します.
左から右に後置表現のトークンをループ:
– オペランドの場合: スタックにプッシュします
– オペレータの場合: スタック内の2つのオペランドをポップし、この演算子に基づいてそれらの値を計算します. スタックの結果でそれをプッシュバック.
メインループの後に残っているスタック内の要素は、発現の結果であります.
表現の接尾辞の要素を持つ配列ElementMath.
public String valueMath(String[] elementMath){ Stack <String> S = new Stack<String>(); InfixToPostfix IFP = new InfixToPostfix(); for (int i=0; i<elementMath.length; i++){ char c = elementMath[i].charAt(0); if (!IFP.isOperator(c)) S.push(elementMath[i]); else{ double num = 0f; double num1 = Float.parseFloat(S.pop()); double num2 = Float.parseFloat(S.pop()); switch (c) { case '+' : num = num2 + num1; break; case '-' : num = num2 - num1; break; case '*' : num = num2 * num1; break; case '/' : num = num2 / num1; break; default: break; } S.push(Double.toString(num)); } } return S.pop(); }
あなたがまだ開い符号付きのケースを検討していないように見えます, 右小括弧.
その後, 計算の順序が異なることになります.
表現だったときDJKサフィックスはもはやあまりないと判断されます.
Hàm main viết sao vay76
Hàm main viết sao vậy bạn.
🙂 chuyển từ Infix sang PostFix được nhưng chạy cái tính ra kết quả bị lỗi anh ơi, để ValueMatch dưới cùng trong main sau khi đã chuyển ra được Postfix nhưng vẫn bị lỗi. ANh có thể check code lại giúp không anh
chắc cú pháp biểu thức của bạn sai. mình test chạy đúng mà.
Trong hàm valueMath bạn chạy i từ 1 là ra đúng nhá, mình cũng bị chỗ ni, 最初のelementMath要素が空である理由は明確ではないため、falseになります。??? 修正は正しく実行されますが、理由がわかりません, ここであなたの理由を探しています.
cho mình xem hàm main với b