Java中有没有类似于eval()的函数?目的是计算一个字符串类型的数学表达式的值

比如计算下面字符串数学表达式的值String str = "1+2*(3+6)-5/2";
2024-11-26 03:15:24
推荐回答(3个)
回答1:

有啊,脚本引擎

public class Test {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine se = manager.getEngineByName("js");
String str = "1+2*(3+6)-5/2";
Double result =(Double) se.eval(str);
System.out.println(result);
}
}

回答2:

OgnlContext oc = new OgnlContext();
Object object = Ognl.getValue("1+2*(3+6)-5/2", oc, oc.getRoot());
System.out.println(object.toString());

回答3:

记得 好像 哪本书中 写过这样的问题,但是没有现成的函数 让你 使用 , 是自己 java代码 解析字符串