逆波兰表达式/中缀表达式
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());
}