文章目录
逆波兰计算器
关键字:逆波兰表达式 中缀转后缀
前言
逆波兰(reverse Polish) 表达式又称后缀(postfix)表达式。逆波兰表达式把运算量写在前面,把算符写在后面。
例如:
4.99 ∗ 1.06 + 5.9 + 6.99 ∗ 1.06 4.99 * 1.06 + 5.9 + 6.99 * 1.06 4.99∗1.06+5.9+6.99∗1.06
转化为后缀表达式为:
4.99 1.06 ∗ 5.99 + 6.99 1.06 ∗ + 4.99 \ 1.06 * 5.99 + 6.99 \ 1.06*+ 4.99 1.06∗5.99+6.99 1.06∗+
一、后缀表达式计算
具体的计算方式需要借助栈来实现,具体的规则为:遍历表达式的字符串,遇见的字符为数字时,直接入栈;遇见运算符时,将栈顶的两个元素推出,使用运算符进行计算,将得到的元素入栈;
Stack stack; //创建栈
for char in String:
if char is Number:
stack.push(char);
if char is operator:
stack.poll() and stack.poll() do operation;
stack.push(return of result);
下面以式为例:
6 5 2 3 + 8 ∗ + 3 + ∗ 6 \ 5 \ 2 \ 3+8*+ 3 +* 6 5 2 3+8∗+3+∗
public double caculateRPN(String str){
LinkedList