package com.github.wdn.coding2017.basic.stack.expr;
import java.util.Arrays;
import java.util.Stack;
public class PrefixExpr {
String expr = null;
public PrefixExpr(String expr) {
this.expr = expr;
}
public float evaluate() {
try {
Stack stack = new Stack();
char[] exprArr = expr.toCharArray();
String numStr="";
for (int i = exprArr.length - 1; i >= 0; i--) {
char c = exprArr[i];
if(!Operator.isOperator(c) && c!=' '){
numStr = numStr+c;
continue;
}
if(!"".equals(numStr)){
stack.push(numStr);
numStr="";
}
if (Operator.isOperator(c)) {
float result = Operator.calculate(Float.parseFloat(stack.pop().toString()), Float.parseFloat(stack.pop().toString()), c+"");
stack.push(result);
}
}
return Float.parseFloat(stack.pop().toString());
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
}