package com.wang;
import java.util.*;
public class Test {
public static void main(String[] args) {
String Poland="3 4 + 5 * 6 -";
//先将表达式存入Arralist,遍历Arralist配合栈完成计算
List<String> getlist = getlist(Poland);
System.out.println(getlist);
int res=compute(getlist);
System.out.println(res);
}
public static List<String> getlist(String Poland) {
//按空格分割字符串并存入数组
String[] split = Poland.split(" ");
ArrayList<String> arrayList = new ArrayList<String>();
//遍历数组存入集合
for (String i :split) {
arrayList.add(i);
}
return arrayList;
}
public static int compute(List<String> list) {
Stack<String> stack=new Stack<String>();
for (String i : list) {
//使用正则表达式取出多位数字
if (i.matches("\\d+")) {
//入栈
stack.push(i);
}else {
//取出两个运算后入栈
int num2=Integer.parseInt(stack.pop());
int num1=Integer.parseInt(stack.pop());
int res=0;
if(i.equals("+")) {
res=num1+num2;
}else if (i.equals("-")) {
res=num1-num2;
}else if (i.equals("*")) {
res=num1*num2;
}
else if (i.equals("/")) {
res=num1/num2;
}
stack.push(res+"");
}
}
return Integer.parseInt(stack.pop());
}
}