/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ExpressionEvaluator ev = new ExpressionEvaluator(); String exp = "sqrt(16)/exp(4^2)"; System.out.println(ev.getRPN(exp) + ""); System.out.println(ev.eval(exp) + ""); }
public String getRPN(String expression) { return toPostFix(expression).toString(); } public double eval(String expression)
public double eval(final String expression) { final Queue output = toPostFix(expression); final double[] eval = new double[output.size()]; int cp = 0;//current position final String token = output.dequeue(); double v = 0; if (isOperator(token)) { if (token.compareTo("+") == 0) { v = eval[cp - 2] + eval[cp - 1]; } else if (isFunction(token)) { if (token.compareTo("log") == 0) { if (eval[cp - 1] < 0) {
throw RankLibError.create("Error: Invalid expression: \"" + expression + "\". Parentheses mismatched."); } else if (isOperator(token)) { if (lastReadToken.compareTo("(") == 0 || isOperator(lastReadToken))//@token is a unary opeartor (e.g. +2, -3) while (j < expression.length()) { final String next = expression.charAt(j) + ""; if (next.compareTo(")") == 0 || next.compareTo("(") == 0 || isOperator(next)) { break; } else { if (isFunction(token)) { if (j == expression.length()) { throw RankLibError
public double eval(String expression) Queue output = toPostFix(expression); double[] eval = new double[output.size()]; int cp = 0;//current position if(isOperator(token)) cp--; else if(isFunction(token))
else if(isOperator(token)) if(lastReadToken.compareTo("(") == 0 || isOperator(lastReadToken))//@token is a unary opeartor (e.g. +2, -3) if(next.compareTo(")")==0 || next.compareTo("(")==0 || isOperator(next)) break; else if(isFunction(token))
/** * @param args */ public static void main(final String[] args) { final ExpressionEvaluator ev = new ExpressionEvaluator(); final String exp = "sqrt(16)/exp(4^2)"; logger.info(() -> ev.getRPN(exp) + ""); logger.info(() -> ev.eval(exp) + ""); }
public String getRPN(final String expression) { return toPostFix(expression).toString(); }