package com.coding.week7; import com.coding.week6.exprNew.Operator; import com.coding.week6.exprNew.Token; import com.coding.week6.exprNew.TokenParser; import java.util.List; import java.util.Stack; public class PostfixExpr { String expr = null; final Stack<Float> numStack; final Stack<Operator> operStack; public PostfixExpr(String expr) { this.expr = expr; this.numStack = new Stack<>(); this.operStack = new Stack<>(); } public float evaluate() { TokenParser parser = new TokenParser(); List<Token> tokens = parser.parse(expr); for (Token token : tokens) { if (token.isNumber()) { numStack.push(token.getFloatValue()); } else if (token.isOperator()) { if (numStack.size() >= 2) { Float num1 = numStack.pop(); Float num2 = numStack.pop(); Float result = token.getOperator().apply(num2, num1); numStack.push(result); } } } return numStack.pop(); } }