如何解析以字符串形式给出的数学表达式并返回数字?

2022-09-01 01:25:03

在Java中,有没有办法从这个数学表达式中获取结果:

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

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


答案 1

你可以把它传递给 BeanShell ,如下所示:bsh.Interpreter

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

您需要确保评估的字符串来自受信任的源和通常的预防措施,否则它将直接起作用。

如果你想采用更复杂(但更安全)的方法,你可以使用ANTLR(我怀疑它有一个数学语法作为起点),并实际编译/解释自己的陈述。


答案 2

我最近开发了一个表达式解析器,并在apache许可证下发布。你可以在 http://projects.congrace.de/exp4j/index.html

希望有所帮助