package me.lzb.basic.expr;
import me.lzb.common.utils.StringUtils;
import java.util.Stack;
/**
* 后缀表达式
* Created by LZB on 2017/4/20.
*/
public class PostfixExpr {
private String expr;
public PostfixExpr(String expr) {
this.expr = expr;
}
public float evaluate() {
Stack<String> symbolStack = new Stack<>();
Stack<Float> numberStack = new Stack<>();
char[] array = this.expr.toCharArray();
String number = "";
for (int i = 0; i < array.length; i++) {
if (Character.isDigit(array[i])) {
number = number + String.valueOf(array[i]);
} else {
if (StringUtils.isNotBlank(number)) {
numberStack.push(Float.valueOf(number));
number = "";
}
if (Character.isSpaceChar(array[i])) {
} else {
symbolStack.push(String.valueOf(array[i]));
CalUtil.calculate(symbolStack, numberStack, false);
}
}
}
return numberStack.pop();
}
}