2012-11-07 94 views
3

我試圖從它的括號分裂Java中

例如分割一個簡單的數學表達式數學表達式:(8+(3(2+3)(4-1)))分離到的小表情像(2+3), (4-1), (3*5*3), and finally (8+45)

我試着在這裏看Splitting an expression,但由於它是在Python中,我不知道如何在Java中實現它。

是否有人可以幫助我..

+1

如果您只是想評估表達式,請看[this](http://stackoverflow.com/questions/3422673/evaluating-a-math-expression-given-in-string-form)和[這](http://stackoverflow.com/questions/1432245/java-parse-a-mathematical-expression-given-as-a-string-and-return-a-number)後 –

+0

這不只是'拆分從括號中引出一個簡單的數學表達式'。這被稱爲「解析」和「評估」。這比「分裂」要複雜得多。例如,即使在內部乘法周圍沒有括號,你也需要能夠正確評估'(8 + 3(2 + 3)(4-1))'。 – EJP

+0

[Equation(expression)parser with precedence?]的可能重複項(http://stackoverflow.com/questions/28256/equation-expression-parser-with-precedence) – EJP

回答

0

只是一個建議 使用arithmatic表達式樹來解決這個問題。我已經完成了這個使用C#,如果你有興趣我可以給的方法

3

我認爲dijkstra的分流碼算法可能會幫助你,它的目的是解決中綴表示法。您可以採取中間結果來獲取您要查找的表達式。

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

C例程代碼包含,這會幫助你,因爲它是類似於Java。