2014-02-10 51 views
0

作爲進入android我決定用我的默認計算器。帶有4個操作標誌的簡單計算器。我一直在給所有按鈕正確的行爲,將每個數字存儲在'num'ArrayList(String)中,並簽署一個'sign'ArrayList(String)。計算器應用程序方法

我想做的事情是將數字和符號組合成一個字符串,將其解析爲一個浮點數並得到結果。我認爲這是的方便/簡單的方法來處理它,因爲當你設定一個浮動像這樣的:

float f = 6*4-5/2+3 

它給你正確的結果。但它顯然不從一個字符串,如下所示:

String s = "6*4-5/2+3" 
Float f = Float.valueOf(s) 

有沒有辦法從我的2 ArrayList(字符串)獲取結果?在否定的情況下,什麼是可行的方法(從某種意義上說我不是一個有經驗的程序員)我呢?

+0

使用DijkstraTwoStack算法進行表達式評估。這將幫助你解決問題,如果你想我會添加代碼的答案? –

+0

看一下這個圖書館http://www.objecthunter.net/exp4j/ –

+0

嘿@AnuranjitMaindolan和A.S ..我看看你的兩個想法。非常感謝你! – NicolaF

回答

0

我認爲這種方法是不正確的。 我會做以下幾點:

你會有一個Textview或Edittext作爲計算器的「屏幕」在上面。

那麼你會有你所有的號碼和操作符號按鈕。現在

,每次按下數字,則追加到屏幕上的最後一個,使用.append()

,一旦你在運營商的標誌挖掘 - 會發生兩兩件事:

1)數目TextView的將被存儲爲一個浮點數(在varibale使用Float.valueOf(yourTextView);,說firstNum

2)你將你保存在第二可變點擊操作員,比方說串calcOper

現在,你輸入你的第二個數字,然後你會按Equals符號。

接下來會發生的情況是簡單地使用SwitchIf表達式。

如果calcOper爲「 - 」 - 則執行firstNum - 屏幕上顯示的當前編號。

如果calcOper是「+」 - 那麼做firstNum +屏幕上顯示的當前編號。

最後不要忘記在TextView上設置文本的結果。

祝你好運!

+0

嘿,謝謝!問題是我想能夠執行多個和更長的操作。所以我需要能夠存儲更多的數字,而不僅僅是2.我不能執行第一個操作,然後第二個,然後第三個等,因爲如果我有這個'6 + 4/2'我需要做4/2,然後只有6+以上的結果。 – NicolaF

+0

關於存儲更多的數字,這不是一個問題 - 您只需將結果存儲在第三個變量中。關於長鏈操作我可以想到一個解決方案,但它很漫長而且複雜 - 我相信有更好的答案在那裏:-) – gilonm