2012-01-21 45 views
1

我試圖做一個類似計算器的程序,其中一個將在文本框中輸入一個計算,它會是計算轉換爲int,結果,這裏就是我有,但它不工作不多評估給出文本的數學表達式

string calcStr = textBox1.Text; 
int result = calcStr; 

任何建議不是太複雜嗎?

+0

我聽到正則表達式將會使這種超級容易... –

+0

@YuriyFaktorovich,你聽到什麼是錯的。 –

+0

@ L.B。我在開玩笑 –

回答

1

使用NCalc這種工作...它是免費的,帶有源代碼,並執行所有繁重的工作(解析數學表達式等)並給出計算結果。

2

如果我明白的問題糾正要能夠從一個文本框解析表達式樣1 + 3 + 4,並執行基於輸入的計算。實際上這比任何人想象的都難。

一個常見的解決方案是使用所述調度場算法來解析表達式。有關更多詳細信息,請參閱http://en.wikipedia.org/wiki/Shunting-yard_algorithm

+1

這個問題沒有說明字符串的格式,他試圖解析。對於常見的中綴記號這是一個很好的答案。但是,我會提到,如果輸入可以用波蘭語表示法獲得,那麼實際的計算算法會更容易實現。 (+1)。 – driis

0

如果你想簡單地解析出從字符串的數量,使用像

Int32.Parse(string) 

的功能。如果你需要拿出一個公式,像 「3 + 4/2」 然後您需要逐個提取每個字符並確定它是什麼。

如果字符串爲 「32 + 4/12」 您必須遍歷字符串中的每個字符,並嘗試將當前字符解析爲數字。 Theres一個函數來測試它是否是一個數字。或者只是檢查它的ascii值。

如果成功,拿現在的數字加上下一個,然後再試一次,直到你遇到一個非數字字符。 現在你可以提取你的號碼。 對於您允許的數學運算符,檢查不是數字的字符。其他任何事情都會引發錯誤。

一旦你可以提取所有整方程,你可能必須做一些像堆棧操作對它進行評估。我相信在我的Assembly類中,你需要將Buncha數字和操作符推入堆棧,然後從頂部頂部彈出一個,然後由操作員在之間評估前一個數字。

我希望這是你在說什麼。祝你好運!