如何将类型Object从engine.eval转换为int类型

时间:2013-05-07 09:41:32

标签: java javascript-engine scriptengine

我的程序接受String输入并使用ScriptEngine导入中的engine.eval()进行计算。如何将评估值转换为int?

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

public class Main {

public static void main(String[] args) {

    String s = "206 + 4";
    Object eval;

    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine eng = mgr.getEngineByName("JavaScript");

    try {
        eval = eng.eval(s);
    } catch (ScriptException e) {
        System.out.println("Error evaluating input string.");
    }

//Convert Object eval to int sum
}
}

3 个答案:

答案 0 :(得分:1)

您可以将其转换为BigDecimal,然后从中获取intValue()

int val = new BigDecimal(eval.toString()).intValue();

请注意,intValue()会修剪结果中的Decimal。如果你想抛出异常,如果发生这种情况,请使用引发intValueExact()的{​​{1}}。

答案 1 :(得分:1)

ScriptEngine为任何算术表达式返回Double,因此将其强制转换为Double并使用其intValue方法

    int res = ((Double) eng.eval(s)).intValue();

答案 2 :(得分:0)

int i = Integer.valueOf((String) eval);