Formel Parser

MariusMeier

Mitglied
Hallo zusammen!

Gibt es schon vorgefertigte Bibliotheken von Java oder Open Source, die mir eine Formel parsen können, bsp.: 1/(1/R1+1/R2+1/R3) --> Jetzt müssen die Parameter der Formel (R1,R2,R3) herausextrahiert werden, dann vom Benutzer mit werten gefüllt werden und dann wieder zurück in eine Formel umwandel, mit der dann Java rechnen kann.... gibt es so was? Oder was habt ihr für Ideen?

MFG Marius Meier
 
Hallo zusammen

Hab mir das mit Script Engine mal angeschaut. Ist es aber nicht einfacher mit Token zu abreiten wenn dann die Formel ein wenig komplizierter wird? Bsp.:

s*(1/(k^2+4))+(j*w+5)*(56+j)+(j*2)*(45+4*j)

Kann man hier mit der ScriptEngine auch einfach alle Parameter herausnehmen und dann einfach wieder für Java zum rechnen bereitsltellen? Wie mache ich dass die Klammernreihenfolge eingehaltet wird und dass Punkt vor Strich kommt.... Oder sehe ich das ganze zu kompliziert ? Der Benutzer gibt ja obige Rechnung ein und nachher muss ich diesen String Parsen und dann eben so gestalten dass Java damit rechnen kann.

MFG Marius Meier
 
Sofern bekannt ist wie die Variablen heißen die mit Werten belegt werden müssen kann man das so ganz gut umsetzen. Aber das rauszufinden ist ja auch relativ einfach. Ich weiss nicht ob das mit Javascript direkt geht, Tom?

Ansonsten musst du halt mal alles raussuchen was Variablenmäßig ist, also sich um Buchstaben handelt. Dann präsentierst du die der Reihen nach dem Benutzer und machst dann auf der ScriptEngine jeweils ein put(<variable>,<wert>) und danach ein eval. Dann erhältst du dein Ergebnis. Rechnen kann Javascript schon alleine, da musst du nichts weiter beachten.
 
Ja genau, rechnen mit Komplexen Zahlen? Ist das dort auch möglich.... ? Natürlich muss man eine Mathebibliothek einbinden, welche Komplex rechnen kann.

MFG Marius Meier
 
Ja nochmals..... ehm wie lese ich das ganze jetzt mit der scriptEngine ein... sagen wir mal wir haben: x^2+2*x+1
Das wollen wir jetzt einlesen und die einzelnen Parameter herausextrahieren. Aber wie ? Bindings kann ich hinzufügen, das funktioniert alles auch ganz schön.... aber wie füge ich jetzt die ganze Formel hinzu und lese die einzelnen parameter (hier x) heraus und kann einen wert für x setzen?

MFG Marius Meier
 
Zurück