Märkt continue
Fortsätt med en yttre loop
Märkt continue är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 4 lektioner.
Fortsätta i en yttre loop
Ett vanligt continue startar bara om den inre loopen. Ibland vill du i stället hoppa till nästa varv i den yttre loopen.
För detta erbjuder Java ett etiketterat continue.
Det kopplar en loopetikett till nyckelordet continue för att styra vilken loop som går vidare.
Syntax för etiketterat continue
Formen är continue label;, där etiketten namnger en omslutande loop.
I stället för att gå vidare i den inre loopen hoppar det till nästa varv i den etiketterade loopen.
Allt som återstår i den inre loopen för det varvet hoppas över.
continue outer; // jump to next iteration of 'outer'Ett första exempel
Här fortsätter vi i den yttre loopen när col är lika med 2.
Detta överger resten av den inre loopen och går direkt vidare till nästa rad.
public class Main {
public static void main(String[] args) {
outer:
for (int row = 1; row <= 3; row++) {
for (int col = 1; col <= 3; col++) {
if (col == 2) {
continue outer;
}
System.out.println("row " + row + ", col " + col);
}
}
}
}Läsa utskriften
Varje rad skrev endast ut col 1. När col nådde 2 hoppade continue outer direkt till nästa rad.
Kolumnerna 2 och 3 skrevs aldrig ut för någon rad.
Den inre loopen startade om från col 1 på varje ny rad.
continue jämfört med continue label
Jämför med ett vanligt continue. Det skulle bara hoppa över col 2 och fortfarande skriva ut col 3.
Kör detta och lägg märke till att både col 1 och col 3 visas på varje rad.
public class Main {
public static void main(String[] args) {
for (int row = 1; row <= 3; row++) {
for (int col = 1; col <= 3; col++) {
if (col == 2) {
continue;
}
System.out.println("row " + row + ", col " + col);
}
}
}
}Den viktiga skillnaden
Ett vanligt continue hoppar bara över det aktuella varvet i den inre loopen, så den inre loopen fortsätter.
continue outer med etikett överger hela den inre loopen och startar nästa varv i den yttre loopen.
Den enda etiketten förändrar hur mycket kod som hoppas över.
Hoppa över en hel rad
Etiketterat continue är praktiskt när ett ogiltigt värde ska göra resten av ett inre varv meningslöst.
Här hoppar vi över resten av arbetet med raden och går vidare om något tal i raden är negativt.
public class Main {
public static void main(String[] args) {
int[][] data = {{1, 2, 3}, {4, -1, 6}, {7, 8, 9}};
rows:
for (int r = 0; r < data.length; r++) {
int sum = 0;
for (int c = 0; c < data[r].length; c++) {
if (data[r][c] < 0) {
System.out.println("Row " + r + " skipped");
continue rows;
}
sum += data[r][c];
}
System.out.println("Row " + r + " sum = " + sum);
}
}
}Följa exemplet steg för steg
Raderna 0 och 2 skrev ut sina summor. Rad 1 stötte på ett negativt värde, skrev ut "Row 1 skipped" och hoppade till nästa rad.
Det är viktigt att summan för rad 1 aldrig beräknades, eftersom det etiketterade continue hoppade förbi den.
Filtrera par
En annan användning är att hoppa över ett helt yttre objekt så snart ett inre villkor inte uppfylls.
Den här loopen skriver ut par men hoppar över alla i där produkten av i och j skulle överstiga 6.
public class Main {
public static void main(String[] args) {
loopI:
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (i * j > 6) {
continue loopI;
}
System.out.println(i + " x " + j + " = " + (i * j));
}
}
}
}Etiketters namn och placering
Den etiketterade loopen måste omsluta continue-satsen. Du kan inte fortsätta till en etikett som inte finns ovanför satsen.
Välj beskrivande namn som rows eller loopI så att läsaren vet vilken loop som går vidare.
En tydlig etikett fungerar som dokumentation i sig.
När det hjälper och när det stjälper
Etiketterat continue är användbart när ett villkor ska göra resten av ett inre varv meningslöst och låta loopen gå vidare.
Men om etiketter används för mycket blir flödet svårt att följa. Om ett vanligt continue eller en tidig retur från metoden är enklare att förstå, bör du föredra det.
Använd etiketter endast när de verkligen gör koden tydligare.
Snabbkontroll
Förutsäg effekten av ett etiketterat continue.
Sammanfattning
continue label; hoppar över resten av den inre loopen och låter den namngivna yttre loopen gå vidare till nästa varv.
Det skiljer sig från ett vanligt continue, som bara hoppar över ett enda inre varv. Använd etiketter när de gör logik med flera loopar tydligare, inte bara kortare.
Lär dig Java med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 104
- Lektioner
- 374
Vanliga frågor
Är lektionen ”Märkt continue” gratis?
Ja – hela texten till ”Märkt continue” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Märkt continue”?
Fortsätt med en yttre loop Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Java Academy?
Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Märkt continue”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Java Academy-lektionen?
Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- break och continue
- Märkt break
- Märkt continue
- Undvika spaghettiflöden