Is there a way in Java to get the result from this mathematical expression:
String code = "5+4*(7-15)";
Ie, what's the best way to parse an arithmetic expression?
Is there a way in Java to get the result from this mathematical expression:
String code = "5+4*(7-15)";
Ie, what's the best way to parse an arithmetic expression?
There is no builtin way of doing that. But you can use one of the many many open source calculators available.
Probably not in as straight forward a manner as you are hoping!
But perhaps you could use a javax.script.ScriptEngine and treat the string as a ECMAScript expression, for example?
Take a look at: Scripting for the Java Platform.
You can pass it to a BeanShell bsh.Interpreter
, something like this:
Interpreter interpreter = new Interpreter();
interpreter.eval("result = 5+4*(7-15)");
System.out.println(interpreter.get("result"));
You'll want to ensure the string you evaluate is from a trusted source and the usual precautions but otherwise it'll work straight off.
If you want to go a more complicated (but safer) approach you could use ANTLR (that I suspect has a math grammar as a starting point) and actually compile/interpret the statement yourself.