[算法 – Java的] 计算表达式后缀的价值 – 计算公式后缀价值
数学表达式为传统计算机的中央元件的值的计算将被转换为逆波兰表示法 (后缀) 因此计算是容易. 您可以查看算法 从缀转换为后缀 在我的文章. 在这篇文章中, 我将提出计算方法由协议栈中的一个表达式前缀的价值和后缀.
通过后缀表达式的令牌环从左至右:
– 如果操作数: 推入堆栈
– 如果操作员: 弹出堆栈中出两个操作数,在此基础上操作者的值. 把它推回堆栈结果.
在主循环后堆栈残余元素是表达式的结果.
随着元素表达后缀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, không rõ sao elementMath phần tử đầu là rỗng nên sẽ sai.??? Fix chạy đúng nhưng chưa hiểu lý do, đang tìm lý do đây bạn.
cho mình xem hàm main với b