在Java中,有没有办法从这个数学表达式中获取结果:
String code = "5+4*(7-15)";
另一方面,解析算术表达式的最佳方法是什么?
你可以把它传递给 BeanShell ,如下所示:bsh.Interpreter
bsh.Interpreter
Interpreter interpreter = new Interpreter(); interpreter.eval("result = 5+4*(7-15)"); System.out.println(interpreter.get("result"));
您需要确保评估的字符串来自受信任的源和通常的预防措施,否则它将直接起作用。
如果你想采用更复杂(但更安全)的方法,你可以使用ANTLR(我怀疑它有一个数学语法作为起点),并实际编译/解释自己的陈述。
我最近开发了一个表达式解析器,并在apache许可证下发布。你可以在 http://projects.congrace.de/exp4j/index.html
希望有所帮助