0
这是一个理论上的一个:的Java:评估后缀表达式
我要评价我已经转化而来缀到后缀的表达式。后缀保存在Queue
之内,因为我想避免使用String
。这样我就知道数字之间的分界在哪里,我可以按照“正确”的顺序访问它。
它看起来像这样:
// Original expression: 2+(3+1)-(5-3)^2*3-1
Queue: [2.0, 3.0, 1.0, +, +, 5.0, 3.0, -, 2.0, ^, 3.0, *, -,1.0, -]
现在我想用两个栈:
- 起源栈
- 和目的地(已事先与队列内容填充)堆栈
传递t他后缀表达式从一个到另一个,同时询问当前元素是否是一个运算符的数字并计算连续的数字。
如果我到达一个操作员,并且数目至少为2,我将执行操作并将其推送到目标堆栈。到达原点堆栈的末端(现在为空),我会把所有的东西都传回去,然后重新开始,直到只剩下结果。
我问我现在:
- 这是一个很好的方法或者我应该宁可尝试检测类型
NumberNumberOperator
的图案及一次性处理它们? - 如果第二个选择是要走的路,那怎么可能呢?
听起来很复杂。为什么不只是一堆数字。如果您从队列中读取数字,请将其推入堆栈。如果你阅读一个操作符,将其操作数从堆栈中弹出,执行操作,并将结果重新打开。如果操作数不在那里,则抛出异常。 –
好吧,通过阅读维基百科我明白。删除了我的评论。 –