Frage von Benyou02, 81

Bei Java Taschenrechner mehrere Rechnungen?

Ich habe einen Java Taschenrechner, und möchte jetzt aber Rechnungen wie:

Zahl + Zahl + Zahl - Zahl =

machen wie kann ich mehr als 2 Zahlen berechnen? Mein Taschenrechner läuft über eine Konsole und ohne Design.

Danke im vorraus

Der Code:

http://pastebin.com/VzvT7Jvq

Antwort
von androhecker, 56

Dafür brauchst du einen String Evaluator. Den kann man selber schreiben (ohne Kommas recht einfach) oder du nimmst einen fertigen wie EvalEx oder die JavaScript Engine die schon in Java mitgeliefert ist.

Expertenantwort
von KnusperPudding, Community-Experte für Java, 51

Sowas kannst du durch eine Schleife gestalten.

Wobei die Schleifenbedingung sich beispielsweise an die Eingegebene Rechenoperation koppelt, sprich:

Die Schleife soll so lange wahr sein, bis als Zeichen der Rechenoperation ein "=" eingegeben wird. 

Innerhalb der Schleife könntest du dann abwechselnd Zahlen und Rechenoperationen abfragen.

Und sobald nun ein = eingegeben wird, verlässt du die Schleife und gibst das Ergebnis aus.

Kommentar von Benyou02 ,

Ich verstehe halbwegs was ich machen soll, aber wie? :/

Kommentar von KnusperPudding ,

Ich stell es erstmal an Pseudocode dar (Kein vollständiges java-Beispiel, da dies wohl eine Übungsaufgabe ist und ich dir die Freude am Lösen nicht nehmen lassen möchte).

Variable ergebnis = 0;

Variable eingabe = null;
Variable vorherigeEingabe;

(wiederhole) {
  vorherigeEingabe = eingabe;
  eingabe = Konsoleneingabe;

  wenn (eingabe == "=")
    verlasse schleife;
  
  wenn (vorherigeEingabe == Rechenoperation UND eingabe == zahl) {
     ergebnis = ergebnis plus vorherigeEingabe  plus eingabe;*
  }
}
  Ausgabe Ergebnis;

* = Ist in der Zeile nicht ganz so korrekt. Hier braucht es natürlich ein wenig mehr um hier eine funktionierende Rechenoperation hin zu bekommen.

Antwort
von Balco, 53

Kannst du deinen Code zeigen? Dann können wir dir hier besser helfen.

Am besten lädst du deinen Code auf eine Seite wie z.B. pastebin.com hoch, da GF dies nicht immer korrekt darstellen kann.

Kommentar von Benyou02 ,

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten