1. 程式人生 > 實用技巧 >字尾表示式計算的基本實現

字尾表示式計算的基本實現

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; } }