2010-11-22 93 views
1

如何從J2ME中的字符串評估數學表達式。如何從J2ME中的字符串評估數學表達式

例如含有字符串「2×4」。從我想評估數學表達式並獲得該結果作爲8(2×4)。如何我應該在J2ME這樣做的字符串。

在「Java™Platform Standard Ed。6」中有一個包,即「javax.script」用於從字符串評估數學表達式。像任何包或任何類可用於J2ME評估數學表達式字符串。

回答

1

下面是步驟用於評估J2ME

  1. 從字符串的數學式閱讀字符串variable.Here表達在綴形式的表達。
  2. 將字符串變量中的表達式轉換爲後綴形式,並將其存儲在另一個字符串變量「postfix_str」中。
  3. 使用堆棧評估後綴表單(「postfix_str」數據中的值)中的表達式。
+0

謝謝,這個http://faculty.cs.niu.edu/~hutchins/csci241/eval.htm爲我工作,但它只適用於一個字符長度的操作數,我的意思是3,5,9等,而不是45, 34,81等。你能告訴我一些關於它的事情嗎? – 2013-08-15 11:24:11

2

如果您需要處理嵌套表達式只寫自己的基於堆棧的解析器。

如果你不熟悉的算法,使用兩個棧,一個用於固定運營商和其他保持操作數。

對於基本情況,您將所有運算符和操作數解析到它們各自的堆棧中,然後通過彈出兩個操作數和一個運算符來進行求值,然後執行計算,然後將結果存回操作數堆棧。繼續操作堆棧爲空,操作數堆棧只有一個值(結果)。如果您的運算符用完,並且堆棧中有多個結果,則表達式中存在錯誤。

要處理括號(包括嵌套的括號),您包括左,右括號運營商。在解析表達式的時候,如果你遇到一個正確的paren開始,立即計算表達式(彈出兩個操作數和一個操作符,將結果放回操作數堆棧),直到遇到左paren。然後繼續解析表達式。

+0

感謝您提供的信息。我認爲基於棧的解析器意味着將字符串中的表達式轉換爲後綴,然後進行評估?是正確的還是其他任何方式。指導我解決問題。我是一位J2ME中的新開發人員一個新鮮的工作) – 2010-11-22 06:30:25

+0

嗨弗雷德裏克Pennachi, – 2010-11-22 06:31:09

+1

喜弗雷德裏克Pennachi,謝謝您的information.I認爲基於堆棧的分析裝置,將表達的字符串轉換成後綴然後評估?它是正確的或任何其他way.Guide我解決這個問題。我是一個新的開發人員在J2ME(即時工作更新鮮) – 2010-11-22 06:31:28