我最近开始熟悉一些基本的 Java 编程,并试图完成导师为我设置的任务。基本上,该程序旨在接受一个可能包含任何运算符的方程+, * and #
(我们没有被告知 # 表示的确切含义,只是它是一个优先级高于 * 的一元运算符);并将其转换为 RPN,以便稍后使用 LOAD 和 EXEC 命令进行解释和转换为基本机器代码(但这是以后的事情)。
我创建了基本的转换函数,似乎可以很好地处理 A+6 等基本方程,但是当它遇到括号时似乎有问题。
例如,如果我将以下等式传递给它:
A+6,
A+(B*2)
(((#9)*C)+D)+E
(((#1)))
我得到以下结果:
A6+
A(B2)*+
(((9)#C)*D)+E+
(((1)))#
所以似乎只有括号妨碍了。我的问题是:
- 我将如何最好地处理括号?
- 就像从一开始就删除它们一样简单吗?
- 一元运算符是否有任何需要额外特殊情况的影响?