package com.github.miniyk2012.coding2017.basic.stack.expr; import java.util.List; /** * Created by thomas_young on 30/4/2017. */ public class ExprUtil { /** * 求值 * @param operand1 操作数1 * @param operator 操作符 * @param operand2 操作数2 * @return Token表示的值 */ public static Token evalute(Token operand1, Token operator, Token operand2) { float resultValue; switch (operator.value) { case "+": { resultValue = operand1.getFloatValue() + operand2.getFloatValue(); break; } case "-": { resultValue = operand1.getFloatValue() - operand2.getFloatValue(); break; } case "*": { resultValue = operand1.getFloatValue() * operand2.getFloatValue(); break; } case "/": { resultValue = operand1.getFloatValue() / operand2.getFloatValue(); break; } default: throw new RuntimeException("不支持的运算符:" + operator.value); } return new Token(Token.NUMBER, String.valueOf(resultValue)); } public static String tokens2String(List<Token> tokens) { StringBuffer buffer = new StringBuffer(); int i = 0; for (Token token: tokens) { if (i != tokens.size()-1) buffer.append(token.toString()+" "); else buffer.append(token.toString()); i++; } return buffer.toString(); } }