-2
我正在尝试为Java中的计算器程序实现评估方法。在Java中使用堆栈评估后缀字符串表达式
public double evaluate() {
StringStack stack = new StringStack();
double result = 0;
for (int i = 0; i < postfixTokens.size(); i++) {
if (!isOperator(postfixTokens.get(i))) {
stack.push(postfixTokens.get(i)); //pushes operands to the stack
}else if (isOperator(postfixTokens.get(i))) {
double op1 = Double.parseDouble(stack.pop()); //pops two operands to perform an operation
double op2 = Double.parseDouble(stack.pop());
switch(postfixTokens.get(i)) {
case "+": result = op1 + op2; break;
case "-": result = op2 - op1; break;
case "/": result = op2/op1; break;
case "*": result = op1 * op2; break;
}
}
}
return result;
}
错误发生说堆栈为空每当我尝试评估与一个以上的操作者诸如5 + 5 + 5的表达式。只有一个运算符(例如5 + 5)的表达式可以正常工作。我的代码在哪里出错?
我猜测问题是你需要再次将'result'推入'stack' – radoh
堆栈是一个String堆栈。我是否应该再次从双击转换回字符串? – kevinsangabriel
其实,你为什么要用'String'堆栈呢?为什么不使用'Double'堆栈呢? – radoh