java中的程序是评估修复后的算术表达式。 我的程序中没有出现任何错误,但输出错误。
我正在尝试评估结果为(1*(((2+3)*(4-5))+6))
的{{1}}表达式。
但我得到的输出为1
。
其修复后的表达式为11
期待您的帮助。 谢谢!!
1 2 3 + 4 5 - * 6 + *
答案 0 :(得分:0)
当您从堆栈弹出时,op2
是顶部的元素,op1
位于顶部1。将其更改为:
op2 = nlist.pop();
op1 = nlist.pop();
<小时/> 为了更清楚你的后缀表达式是56 - (在中缀中是5-6)你的堆栈是
| 6 |
| 5 |
当你得到 - 你正在做nlist.push(op1 - op2);
时将6-5
推入堆栈,而你应该推5-6
。