1

我的程序接受一个字符串输入并使用engine.eval()来自 ScriptEngine 的导入来计算它。如何将评估值转换为 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
}
}
4

3 回答 3

1

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

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

请注意,这intValue()将修剪Decimal结果。如果你想抛出一个异常,万一发生这种情况,使用intValueExact()which throws an ArithmeticException.

于 2013-05-07T09:47:22.060 回答
1

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

    int res = ((Double) eng.eval(s)).intValue();
于 2013-05-07T10:01:10.890 回答
0
int i = Integer.valueOf((String) eval);
于 2013-05-07T09:45:19.180 回答