所以我知道你可以使用
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;
只需使用ScriptEngine#put
设置相应的变量即可。例如:
...
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"));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句