栈,正则表达式,字符串转整型
package DataStructure;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 86178
* Date: 2024-02-17
* Time: 16:08
*/
public class PolandNotation {
public static void main(String[] args) {
String suffixExpression="30 4 + 5 * 6 -";
List<String> e=getString(suffixExpression);
System.out.println("处理后的逆波兰表达式:"+e);
int ret=calculate(e);
System.out.println("计算结果:"+ret);
}
public static List<String> getString(String suffixExpression){
String[] split=suffixExpression.split(" ");
List<String> res= new ArrayList<String>();
for(String s:split){
res.add(s);
}
return res;
}
public static int calculate(List<String> str){
int ans=0;
Stack<String> st=new Stack<>();
for(String item:str){
if(item.matches("\\d+")){
//说明是数字
st.push(item);
}else{
//运算符
int n1=Integer.parseInt(st.pop());
int n2=Integer.parseInt(st.pop());
switch(item){
case "+":
ans=n1+n2;
break;
case "-":
ans=n2-n1;
break;
case "/":
ans=n2/n1;
break;
case "*":
ans=n1*n2;
break;
}
st.push(ans+"");//将一个数字转换为字符串
}
}
return Integer.parseInt(st.peek());
}
}