Mærket continue
Fortsæt en ydre løkke.
Mærket continue er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.
Fortsættelse af en ydre løkke
Et almindeligt continue genstarter kun den indre løkke. Nogle gange vil du i stedet springe videre til næste omgang af den ydre løkke.
Til det tilbyder Java et continue med label.
Det kombinerer en løkkelabel med nøgleordet continue for at styre, hvilken løkke der går videre.
Syntaks for continue med label
Formen er continue label;, hvor label angiver en omsluttende løkke.
I stedet for at føre den indre løkke videre hopper det til næste iteration af den løkke, labelen angiver.
Alt, hvad der er tilbage i den indre løkke i den omgang, springes over.
continue outer; // jump to next iteration of 'outer'Et første eksempel
Her fortsætter vi den ydre løkke, når col er lig med 2.
Det opgiver resten af den indre løkke og går straks videre til næste række.
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);
}
}
}
}Sådan læses outputtet
Hver række udskrev kun col 1. Da col nåede 2, hoppede continue outer direkte til næste række.
Kolonne 2 og 3 blev aldrig udskrevet for nogen række.
Den indre løkke startede forfra fra col 1 på hver ny række.
continue kontra continue label
Sammenlign med et almindeligt continue. Det ville kun springe col 2 over og stadig udskrive col 3.
Kør dette, og læg mærke til, at col 1 og col 3 begge vises for hver række.
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 afgørende forskel
Et almindeligt continue springer kun den aktuelle omgang i den indre løkke over, så den indre løkke fortsætter.
continue outer med label opgiver hele den indre løkke og genstarter den næste omgang af den ydre løkke.
Den ene label ændrer, hvor meget kode der springes over.
Spring en hel række over
Et continue med label er praktisk, når én ugyldig værdi skal gøre resten af en indre omgang ugyldig.
Her springer vi resten af arbejdet på rækken over og går videre, hvis et tal i en række er 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);
}
}
}Gennemgang af eksemplet
Række 0 og 2 udskrev deres summer. Række 1 fandt en negativ værdi, udskrev "Row 1 skipped" og hoppede til næste række.
Det er vigtigt, at summen for række 1 aldrig blev udskrevet, fordi continue med label sprang forbi den.
Filtrering af par
En anden anvendelse er at springe et helt ydre element over, så snart en indre betingelse fejler.
Denne løkke udskriver par, men springer ethvert i over, hvis produktet af i og j ville overstige 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));
}
}
}
}Labelnavne og placering
Den løkke, labelen angiver, skal omslutte continue-sætningen. Du kan ikke bruge continue med en label, der ikke står over den.
Vælg beskrivende navne som rows eller loopI, så læserne ved, hvilken løkke der går videre.
En tydelig label fungerer som dokumentation i sig selv.
Hvornår det hjælper og skader
Et continue med label hjælper, når en betingelse skal gøre resten af en indre omgang ugyldig, så programmet kan gå videre.
Men overdreven brug af labels gør forløbet svært at følge. Hvis et almindeligt continue eller en tidlig returnering fra en metode er lettere at læse, skal du foretrække det.
Brug kun labels, når de virkelig gør koden tydeligere.
Hurtigt tjek
Forudsig effekten af et continue med label.
Opsummering
continue label; springer resten af den indre løkke over og fører den navngivne ydre løkke videre til dens næste iteration.
Det adskiller sig fra et almindeligt continue, som kun springer én indre omgang over. Brug labels, når de gør logik med flere løkker tydeligere, ikke bare kortere.
Lær Java med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 104
- Lektioner
- 374
Ofte stillede spørgsmål
Er lektionen “Mærket continue” gratis?
Ja — hele teksten til “Mærket continue” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Mærket continue”?
Fortsæt en ydre løkke. Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Java Academy?
Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Mærket continue”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Java Academy-lektion?
Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- break og continue
- Mærket break
- Mærket continue
- Undgå spaghetti-flow