【发布时间】:2019-09-10 12:24:21
【问题描述】:
我有一个作业:当我们输入像 -(2 + 3) * 1/5 这样的数学表达式时,输出应该是 -1。经过一番研究,我发现RPN算法是解决这个问题的方法。所以我所做的是将表达式从中缀转换为后缀。但问题是在某些情况下我无法确定操作数,例如:
Input: 11+((10-2)*6)+7
Infix-to-Postfix-----------
Output: 11102-6*+7+
“11”和“10”之间以及“10”和“2”之间没有空格,所以我无法正确确定每个操作数。 因为我的输出(后缀)是一个字符串,所以我完全不知道如何解决这个问题。有什么想法吗?
【问题讨论】:
-
这是解决此问题的一种方法。对此有很多的想法;表达式解析是一个众所周知的问题,有许多示例和教程。请参阅How to Ask 页面:应提供非工作代码。
-
你不想要一个令牌的串联,而是一个
List<String>的令牌。并且需要与具有一两个参数的减号运算符不同。 -
要推送一个值(数字),请使用逗号运算符,这样您就有 11,10,2-6*+7+
-
感谢您的建议,我正在努力!