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