package p2.线性结构;
//后缀表达式的计算器
public class SuffixCalculator {
public static void main(String[] args) {
String expression = "(10+20/2*3)/2+8";
String suffixExpression=InfixToSuffix.infixToSuffix(expression);
int result=evaluateSuffix(suffixExpression);
System.out.println(result);
}
private static int evaluateSuffix(String suffixExpression) {
ArrayStack<Integer> stack=new ArrayStack<>();
String[] tokens=suffixExpression.split(" ");
for(String token:tokens){
if(token.length()==0){
continue;
}
if(isNumber(token)){
stack.push(new Integer(token));
}else {
processAnOpeartor(stack,token);
}
}
return stack.pop();
}
private static boolean isNumber(String token) {
return token.matches("\\d+");//正则表达式 判断是否匹配 \d匹配一个数字字符
}
private static void processAnOpeartor(ArrayStack<Integer> stack, String token) {
int num1=stack.pop();
int num2=stack.pop();
if(token.equals("+")){
stack.push(num2+num1);
}else if(token.equals("-")){
stack.push(num2-num1);
}else if(token.equals("*")){
stack.push(num2*num1);
}else if(token.equals("/")){
stack.push(num2/num1);
}
}
}
栈的应用之后缀计算器
最新推荐文章于 2022-11-18 12:37:02 发布