有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在应用变量的值后得到方程的结果?

我打算把一个方程作为输入,把变量的值作为输入,我想根据方程上的给定值找出结果(例如:方程可以是:x^2+(3x+4y)+y^2。。x=3,y=4的值)

Map<String, Object> varsl = new HashMap<String, Object>();
    varsl.put("x", lf);       // Lower value
    Map<String, Object> varsu = new HashMap<String, Object>();
    varsu.put("x", uf);    //Upper Value

fxl = (Double) engine.eval(equation, new SimpleBindings((varsl)));
fxu = (Double) engine.eval(equation, new SimpleBindings((varsu)));

out.println("function value of x lower " + fxl);
out.println("function value of x Upper " + fxu);

但问题是,如果用户输入一个包含(^)或类似内容(例如:x^3)的方程,则无法给出正确的结果。但是如果我写的是(x*x*x)而不是x^3,那么我在计算后得到的结果是正确的


共 (1) 个答案

  1. # 1 楼答案

    如果你需要一个快速&;脏的解决方案,您可以使用Java的内置Javascript引擎:

    public static void main(String[] args) throws ScriptException {
        ScriptEngine js = new ScriptEngineManager().getEngineByName("JavaScript");
        String expression = "var x = 5\n" + "5*x+1";
        System.out.println(js.eval(expression)); //Prints 26
    }
    

    它的效率不会太高,需要对表达式进行预处理以处理求幂运算,但它应该可以工作。更好的方法是使用实际的库,比如EvalEx

    无论哪种方式,在进行任何评估之前,请确保检查您的输入。从外部源执行任意表达式是在应用程序中创建可怕安全漏洞的一种简单方法