Frage von pW1Wp, 42

Java Problem Schulprojekt?

Habe ein Problem mit meinem Java Schulprojekt. Meine Aufgabe ist es einen Bruchrechner zu erstellen, jedoch wird beim klicken der =, C oder AC Taste der Code nicht ausgeführt. Kann mir bitte jemand erklären wieso dies der Fall ist bzw hat jemand einen Lösungsvorschlag?

Hier der Programm Code an dem es scheitert der Rest funktioniert soweit :

Event e;

    EventManager em = EventProducer.getStdEventManager();

    while(true) {

        e = em.getEvent(); 

        if (e.message.equals("+")) {
            zaehler1=zaehlerTextfeld.getIntValue();
            nenner1=nennerTextfeld.getIntValue();
            nennerTextfeld.setText("");
            zaehlerTextfeld.setText("");
            while (true) {
                if(e.message.equals("=")) {
                    zaehler2=zaehlerTextfeld.getIntValue();
                    nenner2=nennerTextfeld.getIntValue();
                    nennerTextfeld.setText("");
                    zaehlerTextfeld.setText("");
                    int [] a=c.addieren(zaehler1,nenner1, zaehler2, nenner2);
                    zaehlerTextfeld.setValue(a[0]);
                    nennerTextfeld.setValue(a[1]);
                    break;
                }
                else if(e.message.equals("C")) {
                    nennerTextfeld.setText("");
                    zaehlerTextfeld.setText("");
                }
                else if(e.message.equals("AC")) {
                    nennerTextfeld.setText("");
                    zaehlerTextfeld.setText("");
                    zaehler2=zaehlerTextfeld.getIntValue();
                    nenner2=nennerTextfeld.getIntValue();
                    zaehler1=zaehlerTextfeld.getIntValue();
                    nenner1=nennerTextfeld.getIntValue();
                    break;
                }
                
            }
        }
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von KnusperPudding, Community-Experte für Java, 17

Das liegt an deiner Verzweigung:

if (e.message.equals("+")) {
zaehler1 = zaehlerTextfeld.getIntValue();
nenner1 = nennerTextfeld.getIntValue();
nennerTextfeld.setText("");
zaehlerTextfeld.setText("");
while (true) {
if (e.message.equals("=")) { .... } }

Um überhaupt erst zu dem Punkt zu kommen, bei dem du nach = C AC Prüfst, erwartest du, dass die Eingabe immer Plus entspricht. Gibst du nun "=" ein, ist die Bedingung "+" niemals erfüllt.

Kommentar von pW1Wp ,

Oke danke dir, hast du auch eine Idee wie ich die Verzweigung so umschreiben könnte, dass das ganze funktioniert?

Kommentar von KnusperPudding ,

Ja, die komplette while-(endlos)schleife wäre hier fehl am platz.

entsprechend entweder ein 

if (e.message.equals("+")) {
 ...
} else if (e.message.equals("=")) { ... }

Oder du verwendest direkt switch-case.

Antwort
von androhecker, 31

Wenn du Hilfe erwartest, solltest du so langen Code auf zB hastebin hochladen.
Die Formatierung hier auf GF ist schrecklich.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten