如何将String转换为数学表达式并使用变量进行求值?

时间:2016-12-22 21:16:59

标签: java math

所以我知道你可以使用

    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;

1 个答案:

答案 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"));