# String in math. Ausdruck umwandeln...



## CHaoSlayeR (9. Mai 2004)

Hi zusammenn,

ich bin gerade dabei, ein kleines Program zu schreiben, das einen Ausdruck als String einliest, ihn dann auf Korrektheit überprüft und, wenn der Ausdruck korrekt ist, das Ergebnis des Ausdrucks ausgibt.

Die Überprüfungen des Ausdrucks und entsprechende Fehlermeldungen hab ich alle schon implementiert, jedoch komme ich nun nicht weiter:

ich habe also diesen Ausdruck, gepackt in einen String. Wie kriege ich jetzt JAVA dazu bewegt, diesen String zu berechnen?

Hab in dem Buch "Java ist auch eine Insel (3. Auflage)" leider nichts zu so etwas gefunden und auch sonst im Netz keine verwertbaren Quellen entdeckt...

...bin für jede Idee dankbar!


----------



## Snape (9. Mai 2004)

> _Original geschrieben von CHaoSlayeR _
> *Hi zusammenn,
> 
> ich bin gerade dabei, ein kleines Program zu schreiben, das einen Ausdruck als String einliest, ihn dann auf Korrektheit überprüft und, wenn der Ausdruck korrekt ist, das Ergebnis des Ausdrucks ausgibt.
> ...



So ganz klar ist mir die Frage nicht. Willst Du lediglich einen String parsen, der einen Wert enthält, kommst Du mit


```
Integer.valueOf(yourString).intValue();
Double.valueOf(yourString).doubleValue();
Float..valueOf(yourString).floatValue();
Long.valueOf(yourString).longValue();
```

usw. zum Ziel.
Hast Du jedoch richtige mathematische Ausdrücke, musst Du den String mittels subString(...) verarbeiten.


----------



## Thomas Darimont (9. Mai 2004)

Hallo!

Ich glaube dazu benötigst du eine zusätzliche Bibliothek.
Schau mal hier:
http://www.singularsys.com/jep/
und hier:
http://www-sfb288.math.tu-berlin.de/~jtem/mathExpr/

Gruß Tom


----------



## CHaoSlayeR (10. Mai 2004)

@Snape: also ich meine einen kompletten Mathematischen Ausdruck a lá:

"32 * ( 89 / (-13) ) +( 8 / 25 ) **2"

, wobei in diesem System " **2 " für Quadrieren steht...

Das oder ähnliches hab ich dann als String vor mir. Zerlegt und bearbeitet hab ich es auch schon so, dass alle einzelnen Elemente (nicht Zeichen) in einem Array der Reihe nach wiederzufinden sind.

array[0] = 32
array[1] = *
array[3] = (
array[4] = 89
...

einen String in eine Zahl umzuwandeln hab ich auch schon gefunden, aber das Hilft mir jetzt nicht wesentlich weiter, da ich ja schlecht sagen kann:

double Ergebnis = array;

Das Hauptproblem ist, wie krieg ich den  Ausdruck so übersetzt, dass ihn Java berechnen kann? Die Operatoren und Klammern geben mir noch Rätsel auf...

@Thomas: wunderbar! Die Bibliothek "JEP" ist eigentlich genau das, was ich brauche, jedoch soll das Programm, oder das Applet ebenso auf vielen anderen Rechnern funktionieren und wenn ich Bibliotheken benutze, die auf anderen Systemen nicht vorhanden sind, dann wird das wohl problematisch. Muss ich mir wohl die Teile rausschreiben, die für meine Zwecke relevant sind...

...trotzdem danke schön  jetzt weiss ich zumindest, wo ich nachschauen muss...


----------

