后缀表达式计算的基本实现

import java.util.Stack;

/**
 *  目标:实现后缀表达式的基本运算
 * 运算规则:1.建立栈 从左到右数字依次入栈
 *         2.如果遇到符号,取出栈顶,和次栈顶的数字进行运算(次栈顶数字在操作符前)
 *         3.直到最后计算出最终结果
 */

 public class SuffixTest {
    public static void main(String[] args) {
        //后缀表达式:4 5 * 8 - 60 + 8 2 / +
        String suffix = "4 5 * 8 - 60 + 8 2 / +";
        String[] arrString = suffix.split(" ");
        Stack<Integer> stack = new Stack<Integer>();
        for (String ele:arrString){
            if(ele.matches("\\d+")){
                stack.push(Integer.parseInt(ele));
            }else{
                Integer num1 = stack.pop();
                Integer num2 = stack.pop();
                stack.push(getResult(num1,num2,ele));
            }
        }
        System.out.println("最后结果:"+stack.pop());
    }

    /**
     * 根据运算符运算结果
     * @param num1
     * @param num2
     * @param operate
     * @return
     */
    public static Integer getResult(Integer num1,Integer num2,String operate){
        if("+".equals(operate)) return num2+num1;
        if("-".equals(operate)) return num2-num1;
        if("*".equals(operate)) return num2*num1;
        if("/".equals(operate)) return num2/num1;
        else return 0;
    }
 }

 

posted @ 2020-09-18 21:41  就是你baby  阅读(315)  评论(0编辑  收藏  举报