反向波兰语表示法Calc:减去两个正数,得出负数?

时间:2019-03-25 07:41:47

标签: java subtraction

在反向波兰符号计算器上对两个数字进行减法运算时,我得到一个负数结果,例如:

20 5-= -15

我希望看到15。

谁能看到我的代码在哪里出问题了?

   else if (input.equals("-")) {
            int n1 = stack.pop();
            int n2 = stack.pop();
            int result = n1 - n2;

            stack.push((int)result);
        }

2 个答案:

答案 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;