Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich überlege schon dei ganze Zeit wie man das hinbekommen könnte wenn man über JOptionPane eine Matheaufgabe eintippt "3.2+4*7.2" oder so, dass die dann auch gerechnet wird.
problem sind halt negative vorzeichen, klammern und man hat ja evtl. mehrere operatoren.
häng da leider... ne idee wäre erstmal in 3 ints die zahlen, operatoren und klammern zählen aber das krieg ich schon nicht hin
also ich will nur diese rechenarten hier verwenden + - * /
Was du vorhast ist nicht trivial, und für sowas muss man das Rad nicht neu erfinden. Ich würde wirklich dazu raten, einfach Benis Parser einzustöpseln, der läuft und ist einfach erweiterbar.
unterschätzen tu ichs ja nicht... ich suche erstmal die letzte offene klammer und von da an die erste die geschlossen wird und extrahiere dann den teil und rechne dann mit punkt vor strich das ergebnis aus und setz es an der Stelle wieder in den string und das ganze lass ich sich dann immer wieder selber aufrufen bis das ergebnis steht ... so hab ichs mir gedacht...
aber ich komm nicht so ganz mit diesen "String#replace / String#replaceAll / String#replaceFirst" klar... wieso ist da ein # Zeichen drin?
Na hier wird dein Rechen-String als JavaScript (das man als ScriptEngine einbinden kann) innerhalb von Java ausgeführt. Nicht die feine Englische (Was ist wenn der Nutzer statt einer Formel den Javascript-Befehl für das Löschen von C: eingibt?), dafür sehr einfach zu realisieren.
unterschätzen tu ichs ja nicht... ich suche erstmal die letzte offene klammer und von da an die erste die geschlossen wird und extrahiere dann den teil und rechne dann mit punkt vor strich das ergebnis aus und setz es an der Stelle wieder in den string und das ganze lass ich sich dann immer wieder selber aufrufen bis das ergebnis steht ... so hab ichs mir gedacht...
Glaub uns: du unterschätzt es. Wenn man ganz genau weiß, wie man vorgehen muss, ist die Sache überschaubar. Wenn man sich aber nicht wirklich sicher ist, artet das unglaublich schnell in nicht mehr wartbaren und fehleranfälligen Code aus. (Mal davon abgesehen, dass mit deinem Vorschlag schnell deutliche Rundungsfehler auftreten werden.)
Beispiele: Wie realisierst du denn Punkt-vor-Strichrechnung? Wie gehst du mit Leerzeichen um? Was ist, wenn jemand eine falsche Formel eingibt (z.B. "12 * ( 2 +) 3")?