2013-08-28 32 views
-5

我正在做一個計算器,它應該接收輸入爲一個字符串,然後執行計算,輸出結果。如何解決在java中的計算

例如,輸入可以是

((23+17) mod 7 × 4 AND 13 

和輸出將是4,如所預期。

如何解析輸入,提取所有操作數並執行計算?

+0

你知道在Java中存在模運算符嗎?尋找它.. – Maroun

+0

我會建議使用數學來解決這樣的計算。此外,如果您正在嘗試這樣做,則確定'AND'代表的是什麼,這非常重要。 – SubSevn

+2

您對Java語言感到滿意嗎? 我假設沒有。可能花費更少的精力在Google上找到答案。 – dharam

回答

2

其他的答案只是「如何將一個變量設置爲這樣的結果」,但如果你實際上是在尋找解析輸入,你應該參考這個:

Equation (expression) parser with precedence?

有許多的解決這類問題的方法,以及一些用於這樣做的算法。其中一些基於堆棧,一些執行「樹」的下降,我甚至可以想到一個(有點)令人費解的方式來OOP化它。我會從上面的鏈接開始。

1

您可以使用正則表達式來解析字符串。

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

首先,你必須尋找像最重要的參數[() - 括號],再少[* /]和[+ - ]。你必須把整個字符串分成幾部分。

例子:

Simple calculator (bottom of the page)

Another calculator

無論在Java中。

+0

你能否詳細說明一下?語言是不規則的(注意例如嵌套括號),所以我不明白你怎麼能做到這一點? – Henry

+0

已編輯。請參閱鏈接。 – Pawel