【问题标题】:Splitting a maths expression in Java在 Java 中拆分数学表达式
【发布时间】:2012-11-07 06:24:41
【问题描述】:

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

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

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

谁能帮帮我..

【问题讨论】:

  • 如果您只想评估表达式,请查看 thisthis 帖子
  • 这不仅仅是“从括号中拆分[ting]一个简单的数学表达式”。这称为“解析”和“评估”。这比“拆分”要复杂得多。例如,即使内部乘法周围没有括号,您也需要能够正确评估 (8+3(2+3)(4-1))

标签: java


【解决方案1】:

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

这是我的答案...

Parsing an arithmetic expression and building a tree from it in Java

【讨论】:

    【解决方案2】:

    我认为 dijkstra 的调车场算法可能会对您有所帮助,它的目的是解决中缀符号的表达式。您可以通过中间结果来获取您要查找的表达式。

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

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

    【讨论】:

      【解决方案3】:

      只是一个建议 使用算术表达式树来解决这个问题。我是用C#做的,如果你有兴趣我可以给出方法

      【讨论】:

        猜你喜欢
        • 2015-05-02
        • 2019-02-27
        • 2015-03-04
        • 1970-01-01
        • 2020-09-02
        • 1970-01-01
        • 1970-01-01
        • 2017-09-09
        • 2011-03-23
        相关资源
        最近更新 更多