JavaApplication中的JavaScriptEval:“;javax.script.scriptException:应为操作数,但找到了";

JavaApplication中的JavaScriptEval:“;javax.script.scriptException:应为操作数,但找到了";,javascript,java,Javascript,Java,在我的Java应用程序中,我依靠通过ScriptEngine实现的JavaScript来解释和计算从字符串中读取的一些基本数学方程 以下是我得到的: public void calc(String comp){ try { ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine eng = mgr.getEngineByName("JavaScript");

在我的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()

下面是JavaScript代码:

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

你把哪个javascript字符串传递给引擎?你在说什么,正如我说的,我对javaScriptSo一无所知。那么什么是
comp
?Fortran代码?不,它只是一个数学表达式,例如“3+5”或“2*9”,或者字符串看起来是一个字符串化数组,因此在将数组传递到Java应用程序之前,您需要
join()。查看使用此Java的JS代码会有所帮助。