[算法 – 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();
	}