所以我知道你可以使用
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String infix = "3+2*(4+5)";
System.out.println(engine.eval(infix));
这一切都很棒,但是如果我想评估该表达式中的变量,则将其称为x并使其成为0和1之间的随机变量。这是使用蒙特卡罗方法通过使用给定输入来评估定积分的想法由用户。所以,如果我们有类似的说法
String infix = x^2+2;
答案 0 :(得分:1)
只需使用ScriptEngine#put
设置相应的变量即可。 E.g:
...
engine.put("x", 25);
System.out.println(engine.eval("x * x + 3 * x + 5"));
或者你可以利用ScriptEngine的上下文不在两个eval
之间切换的事实:
...
engine.eval("var x = 25");
System.out.println(engine.eval("x * x + 3 * x + 5"));