2013-05-08 29 views
2

現在我哈瓦一個String lam = "(8-2*7.5)+10",所以沒有任何方法或類來計算這個字符串表達式直接返回我結果Java的:有一些實用的方法來計算

在此先感謝!

+2

您可以使用此link.http://stackoverflow.com/questions/3422673/evaluating-a-math-expression-given-in-string-form – Rohan 2013-05-08 07:22:56

回答

1

幾乎肯定不是默認情況下。這對應於Java代碼(eeek!)的運行時解釋或Java標準庫中嵌入的相當平凡的算術子語言的解析和解釋機制。

如果你需要分析和評估這種表情,我會考慮寫一個簡單的遞歸下降解析器和即時評估。快速谷歌搜索應該建議用Java來完成這種語言的方法。

3

試試這個

double res = (Double) new ScriptEngineManager().getEngineByName("js").eval("(8-2*7.5)+10"); 
+0

你確定它是'js'而不是'JavaScript'嗎? – bezmax 2013-05-08 07:23:17

+0

我相信,因爲我測試了它並得到了3.0 – 2013-05-08 07:24:53

+0

似乎那個引擎有幾個別名。 'JavaScript'也可以工作並返回相同的腳本引擎。 – bezmax 2013-05-08 07:28:13

2

的Java 1.6中提供Javascript引擎。你可以用它來計算你的數學表達式。

clases使用是:ScriptEngineManagerScriptEngine

+0

也許並非原始海報在詢問時想到的解決方案,而是最實用的解決方案。 (如果他使用了合適的java版本) – mschenk74 2013-05-08 07:25:50

+1

Ya這是真的,Java 6和更高版本提供了非常容易解決問題的JavaScript引擎。如果你有更適合所有版本的java的更好的解決方案,那麼請張貼。感謝您的反饋。 – Joshi 2013-05-08 07:29:21

相關問題