JavaScript eval in JavaApplication: "javax.script.scrip

JavaScript eval in JavaApplication: "javax.script.scriptException: Expected operand but found"

本文关键字:javax script scrip quot eval in JavaApplication JavaScript      更新时间:2023-09-26

在我的Java应用程序中,我依靠通过ScriptEngine实现的JavaScript来解释和计算我从字符串中读取的一些基本数学方程。

这是我得到的:

public void calc(String comp){
try {
            ScriptEngineManager mgr = new ScriptEngineManager();
            ScriptEngine eng = mgr.getEngineByName("JavaScript");
            res[k] = (Integer) eng.eval(comp);
        } catch (Exception e){
            System.out.println("Error in res: " +e);
        }
    }
}

无论哪种输入,执行都会导致:

res中的错误: javax.script.ScriptException: :1:5 需要操作数,但找到 , [3, -, 3] ^ 在第 1 行第 5 列中,此处使用示例性输入 comp = "3-3"

.

或:

public int[] res: javax.script.ScriptException: :1:6 需要操作数,但找到 * [-12, *, 3] ^ 在第 1 行第 6 列

我不懂JavaScript,所以我不知道该怎么做才能修复此错误。

看起来字符串是一个字符串化数组,因此在将数组传递给 Java 应用程序之前,您需要在 JavaScript 中join()该数组,或者编写一些 Java 代码来执行此操作。

下面是 JavaScript 代码:

var str = [3, '-', 3].join(''); // "3-3"