ArrayStack:实现时输出错误

时间:2014-12-09 21:13:07

标签: java stack postfix-notation

java中的程序是评估修复后的算术表达式。 我的程序中没有出现任何错误,但输出错误。

我正在尝试评估结果为(1*(((2+3)*(4-5))+6))的{​​{1}}表达式。 但我得到的输出为1。 其修复后的表达式为11

期待您的帮助。 谢谢!!

1 2 3 + 4 5 - * 6 + *

1 个答案:

答案 0 :(得分:0)

当您从堆栈弹出时,op2是顶部的元素,op1位于顶部1。将其更改为:

op2 = nlist.pop();
op1 = nlist.pop();

<小时/> 为了更清楚你的后缀表达式是56 - (在中缀中是5-6)你的堆栈是

| 6 |
| 5 |

当你得到 - 你正在做nlist.push(op1 - op2);时将6-5推入堆栈,而你应该推5-6