# Geschachtelte for-schleife beenden



## WhiteSoul_ (14. Jan 2016)

Ich will geschachtelte for-schleifen durchlaufen und wenn eine if-bedingung erfüllt ist, soll das durchlaufen abgebrochen werden. Bei mir sieht es grade so aus:


```
for (int i = 0; i < spielfeld.length; i++) {
    for (int j = 0; j < spielfeld[i].length; j++) {          
        if (spielfeld[i][j].getID() == '6') {
            **Code**
            break;
        }
    }
}
```

Jedoch ist es bei mir so, dass die schleife bei mir weiterläuft nachdem die if-bedingung erfüllt ist, aber eig soll sie abbrechen, sobald die bedingung das erste mal erfüllt ist, was muss ich ändern damit es funtioniert?


----------



## Joose (14. Jan 2016)

Du kannst Schleifen mit Labels versehen und beim "break" Statement dann das Label angeben.
Beispiel:
http://stackoverflow.com/questions/886955/breaking-out-of-nested-loops-in-java

EDIT: Ohne Label Angabe bricht das break nur die innerste Schleife ab.
EDIT2: Auch kann man beim "continue" Statement ein Label angeben


----------



## kneitzel (14. Jan 2016)

Ich möchte an dieser Stelle meine Gedanken etwas teilen ...

Also dieses ganz break und break mit label bereiten mir etwas Kopfschmerzen. Natürlich sind break und continue ok, aber das hat bei mir immer einen schalen Beigeschmack. 

Was für Möglichkeiten sehe ich alles:
a) Wenn man das in eine Funktion bringt, dann wäre das Ausbrechen ein return Befehl. Wäre aus meiner Sicht deutlich lesbarer (Es soll coding standards geben, die verlangen, dass man eine Funktion nicht vorzeitig verlässt, aber das halte ich für übertrieben. Das nur als kleine Anmerkung am Rande. Dann würde diese Möglichkeit ggf. entfallen).
b) Von einer for-Schleife erwarte ich eigentlich, dass diese immer komplett durchläuft. Der Zähler wird dabei nur von der Schleife selbst verändert. (Einzige Ausnahme: return statement.) Wenn dies nicht gegeben ist, dann kann man andere Schleifen verwenden wie z.B. eine while Schleife.

Das sorgt dann in meinen Augen für eine bessere Lesbarkeit.

Das ist aber natürlich nur meine Meinung und jeder soll Code so schreiben, wie es eben im Team abgestimmt ist bzw. wie er es für richtig hält. (Meine Punkte sind übrigens auch in dem Link von Joose angesprochen bezüglich Code in eine Funktion packen und dann aus der Funktion zurück springen.

Konrad


----------

