public class RecurPrefix { double eval( String prefixExpr ) { String [] tokens = tokenize(prefixExpr); return calculate ( tokens, new int[]{0}); } double calc ( String op, double v1,double v2) { switch (op) { case "+": return v1 + v2; case "-": return v1 - v2; case "*": return v1 * v2; case "/": return v1 / v2; default: throw new RuntimeException("not operator: " + op); } } double calculate( String[] tokens, int [] idx ) { String tk = tokens[idx[0]++]; if ( isOp(tk) ){ double left = calculate(tokens, idx); double right = calculate(tokens, idx); return calc(tk,left, right); } else { return Double.parseDouble(tk); } } boolean isOp(String tk) { return "+*-/".contains(tk); } String [] tokenize ( String prefixExpr) { return prefixExpr.split(" "); } }


이렇게...

RecursivePrefix rpx = new RecursivePrefix();

doble answer = rpx.eval("+ 12 4");