1.先定义一个方法分割字符串每个数据,然后存到集合里面 2.然后在新的方法中定义 一个栈来存储数据 具体实现如下:
//字符串转换为list集合 public static List<String> getString(String str) { //方便为了测试,用空格隔开 String [] res=str.split(" "); //创建集合存储 List<String> list=new ArrayList<String>(); for (String red:res) { list.add(red); } return list; } //计算逆波兰表达式 public static int ca(List<String> list) { //定义一个集合存储数据 Stack<String> stack=new Stack<>(); //遍历集合 for (String item:list) { //判断是否为数字,是放进去 if (item.matches("\\d+")){ stack.push(item); //否则丛stack弹出两个数据进行运算 }else { //第二个数据 int num2=Integer.parseInt(stack.pop()); //第一个数 int num1=Integer.parseInt(stack.pop()); int res=0; switch (item){ case "+": res=num1+num2; break; case "-":res=num1-num2; break; case "*":res=num1*num2; break; case "/": res=num1/num2; break; default:throw new RuntimeException("符号有误"); } //最后的后果 stack.push(res+""); } } return Integer.parseInt(stack.pop()); }