JAVA - calculator no if's or catch - ScriptEngineManager -
as school job have write calculator (args passed command line) without conditional operands such if, catch or for, while, etc.
i want use javascript calculation, problem java.lang.classcastexception: java.lang.integer cannot cast java.lang.string.
please me correct code.
import java.math.bigdecimal; import javax.script.scriptenginemanager; import javax.script.scriptengine; public class calc { public string docalc(string string) { string[] argslist = {}; bigdecimal = null, b = null; string operand = null; try { argslist = string.split("\\s+"); = new bigdecimal(argslist[0]); operand = argslist[1]; b = new bigdecimal(argslist[2]); //javascript arithmetics scriptenginemanager mgr = new scriptenginemanager(); scriptengine engine = mgr.getenginebyname("javascript"); //javascript arithmetics return (string) engine.eval(a+ " " + operand + " " + b); } catch (exception e) { //e.printstacktrace(); system.out.println("wrong args"); } return ""; } }
a simple tostring();
appended return line seems trick.
the line becomes:
return engine.eval(a+ " " + operand + " " + b).tostring();
according docs eval()
method returns (unspecified) object, of tostring()
method seems convert result properly.
Comments
Post a Comment