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

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

在Java中是否有一种方法可以从这个数学表达式中得到结果:

String code = "5+4*(7-15)";

另一方面,解析算术表达式的最佳方法是什么?


翻阅古今
浏览 510回答 3
3回答

30秒到达战场

你可以把它传递给BeanShell bsh.Interpreter就像这样:Interpreter interpreter = new Interpreter();interpreter.eval("result = 5+4*(7-15)");System.out.println(interpreter.get("result"));您将希望确保您计算的字符串来自可信的源和通常的预防措施,但否则它将直接工作。如果你想采取更复杂(但更安全)的方法,你可以使用反TLR(我怀疑它有一个数学语法作为起点),并且自己来编译/解释这个语句。

回首忆惘然

您可以使用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也许有更好的方法,但这个方法有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java