为了账号安全,请及时绑定邮箱和手机立即绑定

Java中是否有val()函数?

Java中是否有val()函数?

Java中是否有val()函数?我有一个字符串,如下所示:String str = "4*5";现在我要得到的结果是20通过使用字符串。我知道在其他语言中eval()函数就能做到这一点。我如何在Java中做到这一点?
查看完整描述

4 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

您可以使用ScriptEngine类并将其计算为Javascript字符串。

ScriptEngineManager manager = new ScriptEngineManager();ScriptEngine engine = manager.getEngineByName("js");Object result = engine.eval("4*5");

也许有更好的方法,但这个方法有效。


查看完整回答
反对 回复 2019-05-30
?
慕村225694

TA贡献1880条经验 获得超4个赞

没有标准的Java类或方法可以做您想做的事情。你的选择包括:

  • 选择并使用一些第三方表达式评估库。例如果冻或者列出的六家图书馆中的任何一家这里.

  • 类的Java源代码中将表达式包装为eval方法,将其发送到Java编译器,然后加载生成的已编译类。

  • 使用一些可以从Java调用的脚本语言作为表达式计算器。可能性包括Javascript,BeanShell,等等。

  • 从头开始编写自己的表达式计算器。

第一种方法可能是最简单的。如果您从不受信任的用户那里得到要评估的表达式,第二种和第三种方法是潜在的安全风险。(考虑一下代码注入。)


查看完整回答
反对 回复 2019-05-30
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我可以建议你用Exp4j。从下面的示例代码中可以看出,这很容易理解:

Expression e = new ExpressionBuilder("3 * sin(y) - 2 / (x - 2)")
    .variables("x", "y")
    .build()
    .setVariable("x", 2.3)
    .setVariable("y", 3.14);double result = e.evaluate();


查看完整回答
反对 回复 2019-05-30
  • 4 回答
  • 0 关注
  • 2779 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信