1. Wprowadzenie
Często zdarza się, że nie trzeba wykonywać wszystkich iteracji pętli do końca, lecz należy wyjść z niej wcześniej – na przykład, gdy tylko znajdziesz poszukiwany element. W innych przypadkach trzeba pominąć część pracy i przejść do następnego kroku (np. po odczytaniu danych chcesz pominąć ich przetwarzanie). To właśnie jest sterowanie przepływem wewnątrz pętli.
Instrukcje break i continue w Java są przeznaczone właśnie do tego. Przyjrzyjmy się, jak działają i do czego przydają się w realnych zadaniach.
2. Instrukcja break: „Stop, maszyna!”
Teoria i składnia
Instrukcja break służy do natychmiastowego wyjścia z pętli, niezależnie od miejsca w jej ciele. Gdy tylko wykonanie programu dojdzie do break, pętla od razu kończy pracę, a wykonywanie kontynuowane jest od pierwszej linii kodu po pętli.
while (uslovie)
{
if (kakoe-to_uslovie)
{
break;
}
// pozostały kod pętli
}
To samo działa dla for i dla do-while:
for (int i = 0; i < 10; i++)
{
if (kakoe-to_uslovie)
{
break;
}
// pozostały kod pętli
}
Przykład 1: sprawdzenie, czy liczba jest pierwsza
Liczba jest pierwsza, jeśli dzieli się tylko przez 1 i samą siebie. Musimy sprawdzić liczbę pod kątem pierwszości: przejrzeć wszystkich potencjalnych dzielników od 2 do n−1. Jeśli okaże się, że nasza liczba dzieli się przez jakiś dzielnik, dalej sprawdzać nie trzeba – liczba nie jest pierwsza! Można zakończyć pętlę.
Przykład:
int number = 111;
boolean found = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
found = true;
System.out.println("Znaleziono dzielnik " + i );
break; // Zatrzymujemy pętlę, nie ma potrzeby niczego dalej szukać!
}
}
if (!found)
{
System.out.println("Nie znaleziono dzielnika — liczba jest pierwsza.");
}
Przykład 2: walidacja danych wejściowych użytkownika
Napiszmy małą aplikację, na przykład interaktywną ankietę do zbierania danych:
while (true)
{
System.out.print("Podaj swój wiek: ");
if (console.hasNextInt())
{
int age = console.nextInt();
if (age > 0)
{
System.out.println("Świetnie! Twój wiek: " + age);
break; // dane są poprawne — wychodzimy
}
else
{
System.out.println("Błąd! Wprowadź dodatni wiek.");
}
}
else
{
System.out.println("Błąd! Wprowadź liczbę.");
console.nextLine(); // czyścimy nieprawidłowy wpis
}
}
Po co to jest:
Czasem trzeba wykonywać pętlę w nieskończoność (albo bardzo długo), dopóki użytkownik nie wprowadzi poprawnych danych. Gdy tylko zajdzie zdarzenie, które nas satysfakcjonuje – stosujemy break i ostatecznie wychodzimy z pętli.
3. Instrukcja continue: „Następny, proszę!”
Teoria i składnia
W odróżnieniu od break, instrukcja continue nie kończy całej pętli, a jedynie przerywa bieżącą iterację: wszystko, co znajduje się po continue w ciele pętli, NIE jest wykonywane – następuje przejście do kolejnej iteracji.
for (int i = 0; i < 10; i++)
{
if (uslovie)
{
continue;
}
// ta część wykona się tylko wtedy, gdy continue nie zadziałało
}
Przykład 3: pomijanie liczb parzystych
Załóżmy, że chcesz wypisać tylko liczby nieparzyste z zakresu. Parzyste należy pominąć.
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // jeśli liczba jest parzysta — pomijamy wszystko poniżej!
}
System.out.println("Liczba nieparzysta: " + i);
}
Co się dzieje:
Gdy i = 2, 4, 6..., pętla napotyka continue i od razu przechodzi do następnej iteracji, nie wykonując System.out.println.
Wizualizacja działania krok po kroku:
| i | i % 2 == 0 | Działanie |
|---|---|---|
| 1 | false | print, brak continue |
| 2 | true | continue, brak print |
| 3 | false | print, brak continue |
| ... | ... | ... |
Instrukcje break i continue są używane bardzo często – właściwie w co drugiej pętli. Spodoba ci się praca z nimi.
GO TO FULL VERSION