Java Academy · Lektion

Märkt continue

Fortsätt med en yttre loop

Lektion 3 av 413 steg

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.

Gratis att börja

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

  1. break och continue
  2. Märkt break
  3. Märkt continue
  4. Undvika spaghettiflöden
← Tillbaka till Java Academy