Java中是否有val()函数?

Java中是否有val()函数?

我有一个字符串,如下所示:

String str = "4*5";

现在我要得到的结果是20通过使用字符串。

我知道在其他语言中eval()函数就能做到这一点。我如何在Java中做到这一点?


小唯快跑啊
浏览 2780回答 4
4回答

BIG阳

您可以使用ScriptEngine类并将其计算为Javascript字符串。ScriptEngineManager manager = new ScriptEngineManager();ScriptEngine engine = manager.getEngineByName("js");Object result = engine.eval("4*5");也许有更好的方法,但这个方法有效。

慕村225694

没有标准的Java类或方法可以做您想做的事情。你的选择包括:选择并使用一些第三方表达式评估库。例如果冻或者列出的六家图书馆中的任何一家这里.类的Java源代码中将表达式包装为eval方法,将其发送到Java编译器,然后加载生成的已编译类。使用一些可以从Java调用的脚本语言作为表达式计算器。可能性包括Javascript,BeanShell,等等。从头开始编写自己的表达式计算器。第一种方法可能是最简单的。如果您从不受信任的用户那里得到要评估的表达式,第二种和第三种方法是潜在的安全风险。(考虑一下代码注入。)

慕田峪7331174

我可以建议你用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();
打开App,查看更多内容
随时随地看视频慕课网APP