字尾表示式計算的基本實現
阿新 • • 發佈:2020-09-18
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; } }