我的程序接受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
}
}
答案 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);