posted 13 years ago
Hi there !
You know how to do this :
I've got a String, for example
<code>
String s = "5.04.0*(2.0+2.0)+0.0*(2.0+2.0)*(2.0+1.0)+1.0*(2.0+2.0)
*(2.0+1.0)*(2.01.0)";
or
String s = "2^3+5*3^2+3*4+2";
</code>
Is there a way to calculate the result of the term, given by the String?
I tried Double d = new Double(s) and I got a NumberFormatException.
If you don't have an idea how to solve this with the Java standart lib,
do you know a free math lib that can handle String terms?
I would be very happy to receive some comments!
Thanx ind advance!
 Thomas 
You know how to do this :
I've got a String, for example
<code>
String s = "5.04.0*(2.0+2.0)+0.0*(2.0+2.0)*(2.0+1.0)+1.0*(2.0+2.0)
*(2.0+1.0)*(2.01.0)";
or
String s = "2^3+5*3^2+3*4+2";
</code>
Is there a way to calculate the result of the term, given by the String?
I tried Double d = new Double(s) and I got a NumberFormatException.
If you don't have an idea how to solve this with the Java standart lib,
do you know a free math lib that can handle String terms?
I would be very happy to receive some comments!
Thanx ind advance!
 Thomas 
posted 13 years ago
Hi,
what you need, is a math expression parser. The grammar for simple arithmetic expression looks something like this:
The next step is to write a scanner that splits your input into tokens:
The last step is to write the parserclass that tests if your input string is "wellformed" and builds the abstract syntax tree with which you can evaluate your formula. For each rule of your grammar you implement a method. Each of these methods returns a node of the abstract syntax tree. Each node has a method (e.g. evaluate()) which helps you to evaluate the formula. The evaluate()method of a "plusnode" might something like this:
. To evaluate the entire formula, you call the evaluate()method of the root of your abstract syntax tree.
HTH
Stefan
what you need, is a math expression parser. The grammar for simple arithmetic expression looks something like this:
The next step is to write a scanner that splits your input into tokens:
The last step is to write the parserclass that tests if your input string is "wellformed" and builds the abstract syntax tree with which you can evaluate your formula. For each rule of your grammar you implement a method. Each of these methods returns a node of the abstract syntax tree. Each node has a method (e.g. evaluate()) which helps you to evaluate the formula. The evaluate()method of a "plusnode" might something like this:
. To evaluate the entire formula, you call the evaluate()method of the root of your abstract syntax tree.
HTH
Stefan
Thomas Rochon
Ranch Hand
Posts: 72
posted 13 years ago
Thanx, Dirk & Stefan!
Your replies helped me a lot!
At first I was a bit disappointed to read that my problem couldn't
be solved that easy by the J2SE.
But Stefan gave me the solution by telling me what I was searching for:
a java "math expression parser" !
The rest of the job was done by Google
I found JEP from Singular Systems, offering a Java Math Expression Parser
withtwo different licenses, fitting my needs.
Thanx to both of you! You did me a great favor!
Best regards!
 Thomas 
[ May 23, 2004: Message edited by: Thomas Rochon ]
Your replies helped me a lot!
At first I was a bit disappointed to read that my problem couldn't
be solved that easy by the J2SE.
But Stefan gave me the solution by telling me what I was searching for:
a java "math expression parser" !
The rest of the job was done by Google
I found JEP from Singular Systems, offering a Java Math Expression Parser
withtwo different licenses, fitting my needs.
Thanx to both of you! You did me a great favor!
Best regards!
 Thomas 
[ May 23, 2004: Message edited by: Thomas Rochon ]
Think of how stupid the average person is. And how half of them are stupider than that. But who reads this tiny ad?
The WEB SERVICES and JAXRS Course
https://coderanch.com/t/690789/WEBSERVICESJAXRS
