String in math. Ausdruck umwandeln...

CHaoSlayeR

Erfahrenes Mitglied
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! :)
 
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.

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! :)

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

Code:
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.
 
@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...
 
Zurück