逆波兰计算器
作者:互联网
package 数据结构;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class NiBoLanExpression {
public static void main(String[] args) {
String expression = "3 4 + 5 × 6 -";
String[] split = expression.split(" ");
List<String> list = new ArrayList<String>();
for (String ele : split) {
list.add(ele);
}
System.out.println(Calculator(list));
}
public static int Calculator(List<String> list){
Stack<String> stack = new Stack<>();
for(String ele: list){
if (ele.matches("\\d+")){
stack.push(ele);
}else{
int num2 = Integer.parseInt(stack.pop());
int num1 = Integer.parseInt(stack.pop());
int res = 0;
if (ele.equals("+")){
res = num1 + num2;
}else if (ele.equals("-")){
res = num1 - num2;
}else if (ele.equals("×")){
res = num1 * num2;
}else if (ele.equals("÷")){
res = num1 / num2;
}else throw new RuntimeException("运算符有误");
stack.push(res + "");
}
}
return Integer.parseInt(stack.pop());
}
}
标签:num1,num2,res,ele,波兰,计算器,stack,String 来源: https://www.cnblogs.com/amazing0315/p/16057867.html