Java continue-Anweisung
Mit der continue-Anweisung in Java die aktuelle Schleifeniteration überspringen, einschließlich beschrifteter continue-Anweisungen.
continue ist das leichtere Gegenstück zu break. Während break bedeutet beende die Schleife vollständig, bedeutet continue überspringe den Rest dieser Iteration und starte die nächste. Die Schleife läuft weiter.
Diese Seite erklärt, wie continue jede Schleifenart fortsetzt, die Endlosschleifen-Falle in while-Schleifen, die Verwendung zur Filterung von Elementen, wann es einer invertierten if-Bedingung vorzuziehen ist und wie es nur die innerste Schleife betrifft.
Grundlegende Verwendung
for (int i = 0; i < 5; i++) {
if (i == 2) {
continue;
}
System.out.println(i);
}Ausgabe:
0
1
3
4Wenn i == 2 ist, springt continue direkt zum Aktualisierungsschritt der Schleife (i++) und überspringt das println. Die Schleife prüft dann erneut ihre Bedingung und fährt mit i == 3 fort.
Wie Schleifen fortgesetzt werden
Das Verhalten hängt von der Schleifenart ab:
for— führt den Aktualisierungsausdruck aus und prüft dann die Bedingungwhile— prüft die Bedingung sofortdo/while— prüft die Bedingung sofort (am Ende der Schleife)- erweitertes
for— wechselt zum nächsten Element
Ein continue in einer while-Schleife, das vergisst, den Zustand weiterzuschalten, kann schnell zu einer Endlosschleife werden:
int i = 0;
while (i < 5) {
if (i == 2) {
continue; // i never advances — infinite loop!
}
System.out.println(i);
i++;
}Das ist ein klassischer Fehler. Entweder wird vor dem continue inkrementiert, oder man verwendet eine for-Schleife, damit der Aktualisierungsschritt automatisch ausgeführt wird.
Elemente filtern
Die häufigste Verwendung von continue ist „Elemente überspringen, die nicht benötigt werden":
int[] nums = {3, 7, 2, 8, 5, 4};
for (int n : nums) {
if (n % 2 != 0) {
continue; // skip odd numbers
}
System.out.println(n);
}Ausgabe: 2 8 4.
continue vs. Bedingung invertieren
Oft lässt sich ein continue als if umschreiben, das den Rest des Rumpfs einschließt:
for (int n : nums) {
if (n % 2 == 0) {
System.out.println(n);
}
}Funktional identisch. Welche Variante bevorzugt wird, ist eine Stilfrage:
continueverwenden, wenn es mehrere Übersprungbedingungen gibt; eine Reihe von frühzeitigen Abbrüchen ist flacher als tief verschachtelteifs.- Ein umschließendes
ifverwenden, wenn die Übersprungbedingung einfach und der Rumpf kurz ist.
// continue style — easy to add another skip condition
for (User u : users) {
if (u == null) continue;
if (!u.isActive()) continue;
if (u.isBanned()) continue;
process(u);
}continue überspringt nur eine Ebene
Wie break wirkt continue auf die innerste umgebende Schleife:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (j == 1) continue; // only skips inner iteration
System.out.println(i + "," + j);
}
}Ausgabe:
0,0
0,2
1,0
1,2
2,0
2,2Um die äußere Schleife von innen heraus mit continue zu überspringen, wird eine beschriftete continue-Anweisung verwendet — behandelt in beschriftete Anweisungen.
Ein ausgearbeitetes Beispiel
Was kommt als Nächstes
Wenn man for-Schleifen kombiniert, erhält man verschachtelte Schleifen — die Grundlage für die Arbeit mit Rastern, Tabellen und 2D-Arrays.