四则运算表达式求值
两个要点
1.中缀表达式转后缀表达式
2.后缀表达式求值

中缀表达式转后缀表达式
从左到右遍历中缀表达式的每个数字和符号.
若是数字就输出,成为后缀表达式的一部分.
若是符号则判断其与栈顶符号的优先级,是右括号或者优先级低于等于栈顶符号,则栈顶元素依次出栈并输出,再将当前的符号进栈。一直到最终输出后缀表达式为止。

后缀表达式求值
从左至右遍历表达式的每个数字和符号,遇到数字就进栈,遇到符号,就弹出栈顶两个元素运算,再将运算结果入栈。一直到最终获得结果。

JDK 1.7+

"9+(3-1)*3+10/2";System.out.println(calc(target));}//中缀表达式转后缀表达式"");")":"(")){'(')){result.addLast(ele);}}"(":stack.addFirst(c);"+":"-":"*")||ele.equals("/")||ele.equals("+")||ele.equals("-")){result.addLast(stack.removeFirst());}"*":"/":stack.addFirst(c);"*")||ele.equals("/")||ele.equals("+")||ele.equals("-")){Floatf1=result.removeFirst();Floatf2=result.removeFirst();"+":result.addFirst(f2+f1);"-":result.addFirst(f2-f1);"*":result.addFirst(f2*f1);"/":result.addFirst(f2/f1);break;}}else{result.addFirst(Float.valueOf(ele));}}returnresult.removeFirst();}}
结果:
[9, 3, 1, -, 3, *, +, 10, 2, /, +]
20.0