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

标签 java javascript-engine scriptengine

我的程序接受一个字符串输入,并使用来自 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
}
}

最佳答案

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

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

请注意,intValue() 将修剪结果中的Decimal。如果您想引发异常,万一发生这种情况,请使用 intValueExact() ,它会引发 ArithmeticException

关于java - 如何将Object类型从engine.eval转换为int类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16415888/

相关文章:

java - 在Java中为数组对象赋值

javascript - V8中,null、undefined、boolean等基本类型在内存中是如何存储的?

apache - 使用 Apache Sling 的 Scala 2.8 脚本引擎

java - java中的构造函数重构为setter

java - Akka 消息中的发送行为

java - 使字符串的第一个字符小写的最有效方法?

javascript - 浏览器是否在每个页面加载时解析 javascript?

java - Rhino API - 使用 org.mozilla.javascript.Context 访问 js 方法?

java - 需要帮助将脚本引擎加载到 Karaf 中

java - 使用Java ScriptEngine同步执行多个评估