当我的反向波兰表示法计算器上减去两个数字时,我得到一个减号结果,例如:
20 5 - = -15
然而,我希望看到15。
任何人都可以看到我的代码出错了吗?
else if (input.equals("-")) {
int n1 = stack.pop();
int n2 = stack.pop();
int result = n1 - n2;
stack.push((int)result);
}
堆栈的原理是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);
}
你正在弹出5
然后20
。即,你需要颠倒减法的顺序:
int result = n2 - n1;