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

如何解析作为字符串的数学表达式并返回数字?

如何解析作为字符串的数学表达式并返回数字?

翻阅古今 2019-07-05 15:23:21
如何解析作为字符串的数学表达式并返回数字?在Java中是否有一种方法可以从这个数学表达式中得到结果:String code = "5+4*(7-15)";另一方面,解析算术表达式的最佳方法是什么?
查看完整描述

3 回答

?
30秒到达战场

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

你可以把它传递给BeanShell bsh.Interpreter就像这样:

Interpreter interpreter = new Interpreter();interpreter.eval("result = 5+4*(7-15)");System.out.println(interpreter.get("result"));

您将希望确保您计算的字符串来自可信的源和通常的预防措施,但否则它将直接工作。

如果你想采取更复杂(但更安全)的方法,你可以使用反TLR(我怀疑它有一个数学语法作为起点),并且自己来编译/解释这个语句。


查看完整回答
反对 回复 2019-07-05
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

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

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

事实上,Yu应该知道以下javascript指令的结果:

   eval('var aa=5+4*(7-15)')
   aa // -27

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


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 507 浏览

添加回答

举报

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