package com.johnChnia.coding2017.basic.stack.expr; import com.johnChnia.coding2017.basic.stack.Stack; /** * Created by john on 2017/4/20. */ public class Operator { public void handlerToken(String fix, Stack<Float> stack, Token token) { if (token.isNumber()) { stack.push(Float.parseFloat(token.toString())); } else if (token.isOperator()) { float p = stack.pop(); float q = stack.pop(); stack.push(perform(fix, token.toString(), p, q)); } } private float perform(String fix, String operator, float p, float q) { float result = 0.0f; if (operator.equals("+")) { result = p + q; } else if (operator.equals("-")) { if (fix.equals("postfix")) { result = q - p; } else if (fix.equals("prefix")) { result = p - q; } } else if (operator.equals("*")) { result = p * q; } else if (operator.equals("/")) { if (fix.equals("postfix")) { result = q / p; } else if (fix.equals("prefix")) { result = p / q; } } return result; } }