Java中使用ScriptEngine动态计算公式的示例代码

ChatGPT4o 使用 ChatGPT 4o 回答

问题:

下面Java代码 怎么根据公式formula,代入变量计算公式的数值 Integer var1 = 1; Integer var2 = 2; String formula = "(var1 + var2) * 3";

回答:

在Java中,你可以使用Java的脚本引擎(如JavaScript引擎)来动态计算公式的值。以下是一个示例代码,展示了如何使用ScriptEngine来计算公式的值:

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class FormulaEvaluator {
    public static void main(String[] args) {
        Integer var1 = 1;
        Integer var2 = 2;
        String formula = "(var1 + var2) * 3";

        // 创建一个ScriptEngineManager
        ScriptEngineManager manager = new ScriptEngineManager();
        // 获取JavaScript引擎
        ScriptEngine engine = manager.getEngineByName("JavaScript");

        // 将变量绑定到引擎上下文中
        engine.put("var1", var1);
        engine.put("var2", var2);

        try {
            // 评估公式
            Object result = engine.eval(formula);
            System.out.println("Result: " + result);
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们使用了ScriptEngineManager来获取一个JavaScript引擎,并将变量var1var2绑定到引擎的上下文中。然后,我们使用engine.eval(formula)来评估公式,并输出结果。

请注意,这种方法使用了Java内置的JavaScript引擎(Nashorn),它在Java 8及更高版本中可用,但在Java 15及更高版本中已被移除。如果你使用的是Java 15或更高版本,你可能需要使用其他脚本引擎或库来实现类似的功能。