Wie breche ich verschachtelte Schleifen in Java aus?

Lesezeit: 2 Minuten

Wie breche ich verschachtelte Schleifen in Java aus
boutta

Ich habe ein verschachteltes Schleifenkonstrukt wie folgt:

for (Type type : types) {
    for (Type t : types2) {
         if (some condition) {
             // Do something and break...
             break; // Breaks out of the inner loop
         }
    }
}

Wie kann ich nun aus beiden Loops ausbrechen? Ich habe mir ähnliche Fragen angesehen, aber keine betrifft speziell Java. Ich konnte diese Lösungen nicht anwenden, da die meisten gotos verwendet wurden.

Ich möchte die innere Schleife nicht in eine andere Methode stecken.

Ich möchte die Schleifen nicht zurückgeben. Beim Breaking bin ich mit der Ausführung des Schleifenblocks fertig.

1646645830 108 Wie breche ich verschachtelte Schleifen in Java aus
Zo72

Technisch gesehen ist die richtige Antwort, die äußere Schleife zu beschriften. In der Praxis, wenn Sie an einem beliebigen Punkt innerhalb einer inneren Schleife beenden möchten, sollten Sie den Code besser in eine Methode (eine statische Methode, wenn nötig) auslagern und sie dann aufrufen.

Das würde sich für die Lesbarkeit auszahlen.

Der Code würde ungefähr so ​​aussehen:

private static String search(...) 
{
    for (Type type : types) {
        for (Type t : types2) {
            if (some condition) {
                // Do something and break...
                return search;
            }
        }
    }
    return null; 
}

Passend zum Beispiel für die akzeptierte Antwort:

 public class Test {
    public static void main(String[] args) {
        loop();
        System.out.println("Done");
    }

    public static void loop() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (i * j > 6) {
                    System.out.println("Breaking");
                    return;
                }
                System.out.println(i + " " + j);
            }
        }
    }
}

  • Manchmal verwenden Sie mehrere lokale Variablen, die sich außerhalb der inneren Schleife befinden, und es kann sich unhandlich anfühlen, sie alle zu übergeben.

    – Haest

    7. Dezember 2011 um 1:15 Uhr

  • Sie müssen keinen neuen Block erstellen, um ein Label zu verwenden.

    – Jon Skeet

    20. Mai 2009 um 9:13 Uhr

  • Nein, aber es macht die Absicht viel klarer. Siehe den ersten Kommentar zur akzeptierten Antwort.

    – Bombe

    20. Mai 2009 um 9:24 Uhr

Wie breche ich verschachtelte Schleifen in Java aus
Elle Mundy

Ich verwende niemals Etiketten. Es scheint eine schlechte Praxis zu sein, sich darauf einzulassen. Folgendes würde ich tun:

boolean finished = false;
for (int i = 0; i < 5 && !finished; i++) {
    for (int j = 0; j < 5; j++) {
        if (i * j > 6) {
            finished = true;
            break;
        }
    }
}

Uberprufen Sie ob ein Klassenobjekt eine Unterklasse eines anderen Klassenobjekts
Neuron

Sie können Etiketten verwenden:

label1: 
for (int i = 0;;) {
    for (int g = 0;;) {
      break label1;
    }
}

1646645832 343 Wie breche ich verschachtelte Schleifen in Java aus
Peter Mortensen

Verwenden Sie eine Funktion:

public void doSomething(List<Type> types, List<Type> types2){
  for(Type t1 : types){
    for (Type t : types2) {
      if (some condition) {
         // Do something and return...
         return;
      }
    }
  }
}

964850cookie-checkWie breche ich verschachtelte Schleifen in Java aus?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy