0Pricing
Java Academy · Lekcja

break z etykietą

Czyste wychodzenie z zewnętrznych pętli

break z etykietą to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.

Problem z zagnieżdżonymi pętlami

Zwykłe break opuszcza tylko pętlę wewnętrzną. Często jednak potrzebne jest jednoczesne opuszczenie obu pętli.

Wyobraźmy sobie wyszukiwanie jednej wartości w siatce. Po jej znalezieniu należy zatrzymać całe wyszukiwanie, a nie tylko pętlę wewnętrzną.

Java rozwiązuje ten problem za pomocą break z etykietą.

Czym jest etykieta?

Etykieta to nazwa przypisana do pętli i zakończona dwukropkiem.

Na przykład outer: umieszczone bezpośrednio przed pętlą for nadaje tej pętli nazwę "outer".

Same etykiety niczego nie robią. Stają się użyteczne w połączeniu z break lub continue.

outer:
for (int i = 0; i < 3; i++) {
    // 'outer' is now a name for this loop
}

Składnia break z etykietą

Nazwę etykiety należy zapisać po słowie kluczowym break: break outer;

Informuje to Javę, aby opuściła pętlę o nazwie outer, nawet jeśli instrukcja znajduje się głęboko wewnątrz zagnieżdżonych pętli.

Obie pętle — wewnętrzna i zewnętrzna — zatrzymują się natychmiast.

break outer;  // exits the loop labeled 'outer'

Działanie break z etykietą

W tym przykładzie przeszukiwana jest siatka 3×3. Po znalezieniu col 2 w row 2 wykonywane jest break zewnętrznej pętli.

W ten sposób obie pętle zatrzymują się jednocześnie, inaczej niż w przypadku zwykłego break.

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 (row == 2 && col == 2) {
                    System.out.println("Found at " + row + "," + col);
                    break outer;
                }
            }
        }
        System.out.println("Search over");
    }
}

Dlaczego wszystko się zatrzymało

Wynikiem było najpierw "Found at 2,2", a następnie "Search over".

Ponieważ użyto break outer, obie pętle zostały zakończone. Wiersz 3 nigdy nie został odwiedzony.

Zwykłe break po opuszczeniu tylko pętli wewnętrznej kontynuowałoby działanie od wiersza 3.

Porównanie dwóch instrukcji break

Spójrzmy na tę samą siatkę, tym razem ze zwykłym break.

Opuszcza ono tylko pętlę wewnętrzną, więc pętla zewnętrzna nadal przechodzi przez każdy wiersz.

public class Main {
    public static void main(String[] args) {
        for (int row = 1; row <= 3; row++) {
            for (int col = 1; col <= 3; col++) {
                if (row == 2 && col == 2) {
                    break;
                }
                System.out.println(row + "," + col);
            }
        }
    }
}

Wyszukiwanie w tablicy 2D

Praktycznym zastosowaniem jest znalezienie szukanej wartości w macierzy.

Po zlokalizowaniu wartości break z etykietą czytelnie kończy całe wyszukiwanie.

public class Main {
    public static void main(String[] args) {
        int[][] grid = {{1, 2}, {3, 9}, {5, 6}};
        int target = 9;
        search:
        for (int r = 0; r < grid.length; r++) {
            for (int c = 0; c < grid[r].length; c++) {
                if (grid[r][c] == target) {
                    System.out.println("At row " + r + " col " + c);
                    break search;
                }
            }
        }
    }
}

Etykieta musi znajdować się przy pętli

Etykieta znajduje się bezpośrednio przed pętlą, którą nazywa. Nie można wykonać break do etykiety, która nie znajduje się przy otaczającej pętli.

Należy wybierać czytelne nazwy, takie jak outer, rows lub search, aby kod był naturalny w odbiorze.

Należy unikać niejasnych nazw, takich jak x:, które ukrywają intencję autora.

Trzy poziomy zagnieżdżenia

Etykiety działają również w przypadku trzech lub większej liczby zagnieżdżonych pętli.

W tym przykładzie break z etykietą, po spełnieniu warunku, od razu opuszcza wszystkie trzy pętle.

public class Main {
    public static void main(String[] args) {
        done:
        for (int a = 1; a <= 2; a++) {
            for (int b = 1; b <= 2; b++) {
                for (int c = 1; c <= 2; c++) {
                    if (a + b + c == 4) {
                        System.out.println(a + "," + b + "," + c);
                        break done;
                    }
                }
            }
        }
    }
}

Kiedy break z etykietą pomaga

Break z etykietą jest szczególnie przydatne, gdy kilka pętli trzeba opuścić natychmiast po znalezieniu wyniku.

Unika się w ten sposób dodatkowych zmiennych pomocniczych, takich jak boolean found, sprawdzanych na każdym poziomie.

Używane oszczędnie, pozwala zachować krótkie i czytelne pętle wyszukiwania.

Należy używać oszczędnie

Chociaż etykiety są przydatne, ich nadmiar utrudnia zrozumienie kodu.

Po break z etykietą należy sięgać głównie w rzeczywistych zagnieżdżonych wyszukiwaniach. W prostych pętlach czytelniejsze jest zwykłe break.

Czytelność zawsze jest najważniejsza.

Szybkie sprawdzenie

Określmy, co break z etykietą robi w zagnieżdżonych pętlach.

Podsumowanie

Etykieta nadaje nazwę pętli, a break label; opuszcza nazwaną pętlę wraz ze wszystkimi zagnieżdżonymi w niej pętlami.

Jest to idealne rozwiązanie do jednoczesnego zatrzymania całego zagnieżdżonego wyszukiwania. Następnie zobaczą Państwo, jak etykiety współpracują z continue.

Często zadawane pytania

Czy lekcja „break z etykietą” jest bezpłatna?

Tak — pełny tekst „break z etykietą” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „break z etykietą”?

Czyste wychodzenie z zewnętrznych pętli Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Java Academy?

Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „break z etykietą”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?

Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. break i continue
  2. break z etykietą
  3. continue z etykietą
  4. Unikanie spaghetti w przepływie sterowania
← Powrót do Java Academy