0
A
回答
2
試試這個:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "(3+4)*7/2";
double result=0;
try {
/*
It seems that (on some platforms) this results in a java.lang.RuntimeException
because of converting Object to double, so let's replace it with
Double.doubleValue()
*/
//result = (double) (engine.eval(foo));
result = ((Double) (engine.eval(foo))).doubleValue(); //result = 24.5
} catch (ScriptException e) {
//handle exception here
}
UPDATE
在嘗試計算表達式,你應該測試是否「JavaScript的」 ScriptEngine的註冊您的系統上,你可以像下面這樣做:
ScriptEngineManager manager = new ScriptEngineManager();
List<ScriptEngineFactory> factories = manager.getEngineFactories();
for (ScriptEngineFactory factory : factories) {
System.out.println(factory.getNames());
}
我的輸出
[js, rhino, JavaScript, javascript, ECMAScript, ecmascript]
如果您的輸出中不包含JavaScript
,然後用js
和javascript
嘗試,像
ScriptEngine engine = mgr.getEngineByName("js");
或
ScriptEngine engine = mgr.getEngineByName("javascript");
如果沒有他們的存在,你不能用js爲腳本引擎來評估你的表達
相關問題
- 1. 使用正則表達式從字符串中選擇主要子字符串
- 2. VBA正則表達式無法讀取字符串
- 3. Java的正則表達式字符串
- 4. 正則表達式的正則表達式的Java字符串
- 5. sendSMS()方法無法讀取字符串
- 6. 需要java的正則表達式下面的字符串
- 7. Java的正則表達式和/或串魔法從字符串
- 8. 正則表達式從字符串中提取子字符串
- 9. 要求對於Java正則表達式的字符串
- 10. 無法讀取字符串中的字符(Java)
- 11. 字符串中的數學表達式:NCalc的替代方法
- 12. 字符串中的Java正則表達式字符
- 13. java字符串正則表達式
- 14. 正則表達式,從字符串的開頭讀取
- 15. JavaScript正則表達式從主字符串中提取雙重字符串的子字符串
- 16. 在java中使用正則表達式獲取字符串
- 17. Java正則表達式從字符串中提取度量值
- 18. 無法獲取字符串中的數據正則表達式
- 19. JAVA:從字符串中讀取字符串到某個字符
- 20. 提取字符串正則表達式
- 21. 正則表達式提取字符串
- 22. 正則表達式提取字符串
- 23. 正則表達式 - 獲取字符串
- 24. 字典(字符串,字符串)無法評估表達式
- 25. 從字符串中提取值的最佳方法(正則表達式?)
- 26. 正則表達式表達式提取字符串
- 27. 如何在字符串表達式中查找字符串模式Java?
- 28. 在正則表達式中獲取非法字符範圍:java
- 29. 字符串正則表達式算法
- 30. 通過Java中的正則表達式從字符串中提取數字
我試過這段代碼,它沒有編譯,不應該(雙)是(雙)?由於雙擴展對象,但雙重不 – 2013-04-25 11:16:09
@Richtea不知道爲什麼它不編譯,在我的電腦上編譯沒有問題。檢查它是否生成ScriptException,如果是,那麼「JavaScript」不是JRE中已註冊的ScriptEngine。查看我的更新以瞭解如何列出可用的腳本引擎 – BackSlash 2013-04-25 11:25:31
將(雙)更改爲(雙)它在netbeans中在我的PC上運行時沒有問題。使用(double)它會創建以下異常:線程「main」中的異常java.lang.RuntimeException:不可編譯的源代碼 - 不可變類型 必需:double found:java.lang.Object \t at test.ScratchSpace.main(Test的.java:22) Java結果:1倍 – 2013-04-25 11:32:47