package com.dudy.learn01.data_structure.queue.expr; import java.util.List; import java.util.Stack; public class PostfixExpr { String expr = null; public PostfixExpr(String expr) { this.expr = expr; } public float evaluate() { Stack<String> optStack = new Stack<>(); Stack<Float> numStack = new Stack<>(); TokenParser parser = new TokenParser(); List<Token> tokens = parser.parse(expr); for (Token token : tokens) { if (token.isNumber()) { numStack.push(Float.parseFloat(token.value)); } else if (token.isOperator()) { Float num2 = numStack.pop(); Float num1 = numStack.pop(); Float value = calculator(num1, num2, token.value); numStack.push(value); } } return numStack.pop(); } private Float calculator(Float num1, Float num2, String op) { Float res = 0.0f; if ("*".equals(op)) { res = num1 * num2; } else if ("/".equals(op)) { res = num1 / num2; } else if ("-".equals(op)) { res = num1 - num2; } else if ("+".equals(op)) { res = num1 + num2; } else { System.out.println("opt is not support..."); } return res; } }