2013-12-20 22 views
0

我正在創建一個基本上是一個計算器的程序,它從用戶接收輸入並將其分解爲不同的部分。 例輸入:我該如何解析以字符串形式給出的輸入?

4 + 5 

我的程序需要輸入和分析,並打破了條款,運營商,忽略空格,和其他一些東西。但是,當我將所有作品重新放在一起時,它們都是以字符串形式存在的。所以它看起來像這樣:

"4+5" 

我怎樣才能讓程序採取串並分析其產生的INT 9?

我試過Integer.parseInt(input),毫不奇怪,它返回一個錯誤。那麼是否有一個簡單的(足夠)的方法來做到這一點?或者我將不得不創建自己的方法來解析等式?

順便說一下,它可以做兩個以上的術語,我分解輸入的原因是檢查輸入錯誤,如5 ++ 5或任何這種方式。它也是納入PEMDAS。

+2

[可能的重複](http://stackoverflow.com/q/15173681/1113392) – A4L

+2

而這:http://stackoverflow.com/questions/4173623/mathematical-expression-string-to-number-in- java –

+0

你想使用分流碼算法。您爲操作員使用堆棧,併爲這些值使用隊列。然後,您可以遍歷其中的兩個,以瞭解計算的順序,並遵循「操作順序」規則。 –

回答

1

在沒有改變你當前的代碼的情況下,我確實沒有辦法做到這一點。你可能需要做的是檢查字符串中是否有運算符字符('+','*'等)的實例,並使用split方法分離出數字,然後可以單獨解析爲int,然後然後結合使用操作員。或者,如果可能的話,只需在每個數字和前面的/後面的運算符之間留一個空格,然後分割「'的實例。