3

我正在尝试从括号中拆分一个简单的数学表达式

例如:(8+(3(2+3)(4-1)))分隔成小表达式如(2+3), (4-1), (3*5*3), and finally (8+45)

我尝试在这里查看Splitting an expression,但由于它是在 python 中,我不知道如何在 Java 中实现它。

有人可以帮帮我吗..

4

3 回答 3

3

您实际上必须“拆分”它还是只需要评估它?直接评估它更容易。

这是我对此的回答...

在 Java 中解析算术表达式并从中构建树

于 2012-11-07T06:27:20.863 回答
3

我认为 dijkstra 的调车码算法可能会对您有所帮助,其目的是解决中缀表示法的表达式。您可以获取中间结果来获取您正在寻找的表达式。

http://en.wikipedia.org/wiki/Shunting-yard_algorithm

包含 C 示例代码,这应该对您有所帮助,因为它类似于 Java。

于 2012-11-07T06:31:01.057 回答
0

只是一个建议使用算术表达式树来解决这个问题。我已经使用 C# 完成了此操作,如果您有兴趣,我可以提供方法

于 2012-11-07T06:29:15.320 回答