我想用Java创建一个接收字符串方程式的方法,例如:“ 3 + 2”或“ 32-1 / 3”,甚至是“ min(32,21)”并返回结果我发现ScriptEngine提供了简单操作的解决方案:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
java.lang.String result;
result = engine.eval(equation).toString();
但是它没有min(),max()功能,并且它也不安全,因为您可以通过它输入恶意脚本。
来自@kshetline的评论应解决您有关算术表达式问题的问题;至于安全性,我所能想到的就是使用某种框架进行输入清理,或者编写自己的实现。
签出How best to sanitize input in Java webapp.
希望这会有所帮助。