我使用JEXL库来计算具有不同参数的数学表达式(例如 y=2x+a^2-4*a*x 其中 (x=1&a=3)、(x=5&a=-15) 等)。它适用于简单的表达式,但当我开始使用更难的表达式时 - 它不起作用。这是运行良好的代码:
JexlEngine jexl = new JexlEngine();
Expression func = jexl.createExpression("x1+x2");
MapContext mc = new MapContext();
mc.set("x1", 2);
mc.set("x2", 1);
System.out.println(func.evaluate(mc)); // prints "3" - GOOD ANSWER!
但这一个打印错误的答案:
JexlEngine jexl = new JexlEngine();
Expression func = jexl.createExpression("(x1-2)^4+(x1-2*x2)^2");
MapContext mc = new MapContext();
mc.set("x1", 2);
mc.set("x2", 1);
System.out.println(func.evaluate(mc)); // prints "6" - WRONG ANSWER!
我做错了什么?