反向波兰符号计算:两个正数的减法返回一个减号?

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


20 5 - = -15


然而,我希望看到15。


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


   else if (input.equals("-")) {

            int n1 = stack.pop();

            int n2 = stack.pop();

            int result = n1 - n2;


            stack.push((int)result);

        }



千巷猫影
浏览 93回答 2
2回答

精慕HU

堆栈的原理是LIFO(最后一个进先出)。因此,当您第一次推送然后推送到堆栈中时,第一个将返回,第二个将返回。因此,您计算而不是 .205pop5pop205 - 2020 - 5您应该反转操作数的顺序以进行正确的计算:else if (input.equals("-")) {    int n1 = stack.pop();    int n2 = stack.pop();    int result = n2 - n1;    stack.push((int)result);}

梵蒂冈之花

你弹出,然后.也就是说,您需要反转减法的顺序:520int result = n2 - n1;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java