在反向波兰符号计算器上对两个数字进行减法运算时,我得到一个负数结果,例如:
20 5-= -15
我希望看到15。
谁能看到我的代码在哪里出问题了?
else if (input.equals("-")) {
int n1 = stack.pop();
int n2 = stack.pop();
int result = n1 - n2;
stack.push((int)result);
}
答案 0 :(得分:3)
堆栈的原理是LIFO(先进先出)。
因此,当您先推20
然后推5
到堆栈中时,第一个pop
将返回5
,而第二个pop
将返回20
。因此,您计算的是5 - 20
而不是20 - 5
。
您应该颠倒操作数的顺序以进行正确的计算:
else if (input.equals("-")) {
int n1 = stack.pop();
int n2 = stack.pop();
int result = n2 - n1;
stack.push((int)result);
}
答案 1 :(得分:0)
您先弹出5
,然后弹出20
。也就是说,您需要反转减法顺序:
int result = n2 - n1;