JavaApplication中的JavaScript eval:“javax.script.scriptException:期望的操作数但找到了”

时间:2016-02-25 15:24:03

标签: javascript java

在我的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]        ^列在第5列的行号1处,这里具有示例性输入comp =“3-3”

或者:

  

public int [] res中的错误:javax.script.ScriptException :: 1:6预期操作数但找到*   [-12,*,3]         ^在第6列的第1行

我不懂JavaScript,所以我不知道该怎么做才能解决这个错误。

1 个答案:

答案 0 :(得分:0)

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

这是JavaScript代码:

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