输入要计算的逆波兰表达式,如果是数字,入栈,如果是运算符,将之前入栈的数据出栈,然后进行运算操作,再将结果压栈
import java.util.Stack;
public class Polish {
public int evalRPN(String[] tokens){
Stack<Integer> stack = new Stack<>();
for(String string:tokens){
switch (string){
case "+":
stack.push(stack.pop()+stack.pop());
break;
case "-":
stack.push(-stack.pop()+stack.pop());
break;
case "*":
stack.push(stack.pop()*stack.pop());
break;
case "/":
Integer second = stack.pop();
Integer first = stack.pop();
stack.push(first / second);
break;
default:
stack.push(Integer.valueOf(string));
break;
}
}
return stack.pop();
}
public static void main(String[] args) {
Polish po = new Polish();
String[] arr ={ "10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"};
System.out.println(po.evalRPN(arr));
}
}