我遇到了方程求解器的一部分存在問題。我有一個保存後綴方程的對象數組,這個方法評估每個值。Java中的方程求解器 - 值未被壓入堆棧
我遇到的問題是,它崩潰告訴我,該列表是空的(在這一點上:雙NUM1 =((雙)operandStack.pop());)
有人能告訴我是什麼我在這裏做錯了?
DSAQueue<Object> postfixQueue = new DSAQueue<Object>();
.
.
.
.
private double evaluatePostfix (Queue<Object> postfixQueue)
{
DSAStack<Double> operandStack = new Stack<Double>();
while (postfixQueue.isEmpty() == false)
{
if (postfixQueue.peek() instanceof Double)
{
operandStack.push((Double)(postfixQueue.dequeue()));
}
else
{
double num1 = ((double)operandStack.pop());
double num2 = ((double)operandStack.pop());
char operator = ((char)postfixQueue.dequeue());
double result = executeOperation (operator, num1, num2);
operandStack.push(result);
}
}
double solution = operandStack.top();
return solution;
}
您用什麼參數測試了該方法? –
我的猜測是調用這個函數時堆棧是空的。你有沒有嘗試在調試器中逐句通過你的代碼? –
您是否嘗試調試它? (在第一次迭代中檢查postfixQueue的內容,我打賭問題出在第一個元素類型中,而不是Double的實例,然後用空operandStack落入else情況) – aviad