反向波兰表示法计算:减去两个正数返回减号?

问题描述 投票:2回答:2

当我的反向波兰表示法计算器上减去两个数字时,我得到一个减号结果,例如:

20 5 - = -15

然而,我希望看到15。

任何人都可以看到我的代码出错了吗?

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

            stack.push((int)result);
        }
java subtraction
2个回答
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);
}

0
投票

你正在弹出5然后20。即,你需要颠倒减法的顺序:

int result = n2 - n1;
© www.soinside.com 2019 - 2024. All rights reserved.