My program takes a String input and calculates it using engine.eval()
from ScriptEngine imports. How do I convert the evaluated value to type 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
}
}
You can convert it to a BigDecimal
and then get the intValue()
from it.
int val = new BigDecimal(eval.toString()).intValue();
Note that intValue()
will trim the Decimal
in the result. If you want to throw an exception, in case that is happening, use intValueExact()
which throws an ArithmeticException
.