Java for-schleife beenden

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Nun, da sieht man mal wieder, wozu GOTO doch gut war...

Aber in Java geht das nun mal nicht. Wie du vielleicht schon weißt, kommt man mit dem Schlüsselwort break nur aus der momentan aktuellen Schleife heraus. Daher musst du das Problem anders lösen: Entweder, du beendest das gesamte Programm mit

System.exit(0);

Statt 0 kannst du auch einen anderen Wert angeben; wenn das Programm nicht mit 0 beendet wird, heißt das meist, dass ein Fehler aufgetreten ist. Dem Nutzer kannst du das damit zeigen.

Wenn es nach den zwei Schleifen noch mal weitergehen soll, nimmst du am besten eine Variable hinzu, die immer auf true ist, bis beide Schleifen abgebrochen werden sollen:

boolean breakVar = true;

for(...; (deineBedingung) && breakVar; ...)
{
    ...
    for(...; (deineBedingung2) && breakVar; ...)
    {
        ...
        if(programmBeendenBedingung)
        {
            breakVar = false;
            break;
        }
    }
}
... //hier geht es jetzt weiter

Um dein Programm komplett zu beenden kannst du System.exit(0); benutzen.

Wenn du nur aus den beiden Schleifen rauswillst, lege dir ein boolean Feld (standardmäßig auf true) an dass du mit in die beiden for-Bedingungen nimmst. Wird es false wird keine der Schleifen einen weiteren Durchlauf machen können.

Das wäre jetzt eine simple Methode das zu machen. Wenn ich genau wüsste was dein Code machen soll, könnte man evtl noch bessere Wege finden ohne zusätzliche Indikator-Variable

Der Code macht irgendwie keine Sinn, die Abbruchbedingung der inneren Schleife ist von a1 abhängig, was in der inneren Schleife nicht verändert wird.

Mir scheint es so als ob dein gesamtes Konstrukt falsch angelegt ist, was genau soll der Code leisten? Mir scheint es als müssten die Schleifen eigentlich hintereinander gesetzt werden.


infonoob 
Fragesteller
 27.05.2013, 10:40

die äußere schleife soll eine Variable a abfragen, die innere eine variable b. wenn die eingabe keine zahl ist soll jeweils erneut abgefragt werden, allerdings nur so oft wie vorher im schleifenkopf definiert ist. Wenn für a nun eine zahl eingegben wird geht er in die innere schleife um dort variable b abzufragen. Wenn hier 5 falsche eingaben erfolgen soll das programm beendet werden. bei meinem jetzigen code fängt es allerdings wieder mit der äußeren schleife an und fragt a und b erneut ab.

P.S.: bin absoluter anfänger, habe so codiert wie es für mich logisch erschien.

0
infonoob 
Fragesteller
 27.05.2013, 10:45
@infonoob

P.P.S.: die beiden variablen sollen zu guter letzt miteinander verglichen und die größere der beiden ermittelt werden, was auch funktioniert.

0

einfach an der stelle, an der es aufhören soll

break;

eingeben, dann passt das schon