1. Zespółbreak
Weźmy przykład z poprzedniej lekcji:
Kod | Wyjaśnienie |
---|---|
|
Program będzie odczytywał wiersze z klawiatury do momentu wpisania ciągu znaków "exit" . |
Program czyta wiersze z konsoli do momentu wpisania słowa exit
. Jeśli wpiszesz to słowo, zmienna isExit
zmieni się na true
, a warunek pętli na , a pętla się zakończy.!isExit
false
Java ma specjalny operator break
, który ułatwia pisanie takiej logiki. Jeśli wykonasz polecenie break
wewnątrz pętli, zakończy się ono natychmiast: program rozpocznie wykonywanie poleceń, które następują po pętli. Polecenie jest bardzo zwięzłe:
break;
Oto jak możesz przepisać przykład, który właśnie przeanalizowałeś, używając break
:
Kod | Wyjaśnienie |
---|---|
|
Program będzie odczytywał wiersze z klawiatury do momentu wpisania ciągu znaków "exit" . |
2. Kontynuuj polecenie
Ale break
nie jest to jedyna instrukcja, która pozwala kontrolować zachowanie pętli. W Javie innym operatorem jest continue
. Jeśli wykonasz polecenie continue
wewnątrz pętli, bieżąca iteracja pętli zakończy się przedwcześnie.
Jednokrotne wykonanie ciała pętli nazywane jest iteracją pętli. Polecenie continue
przerywa bieżącą iterację pętli, ale nie samą pętlę, w przeciwieństwie do polecenia break
. Polecenie jest również zwięzłe:
continue;
Ta instrukcja continue
jest bardzo wygodna w użyciu w pętli, jeśli chcemy „pominąć” wykonanie ciała pętli w niektórych sytuacjach.
Problem: Chcemy napisać program, który wyświetla liczby od 1
do 20
, pomijając liczby podzielne przez 7
. Oto jak może wyglądać ten kod:
Kod | Wyjaśnienie |
---|---|
|
Program wyświetla liczby od 1 do 20 . Jeśli liczba jest podzielna przez 7 (reszta z dzielenia przez 7 to 0 ), wyświetlanie jest pomijane. |
W rzeczywistości taki kod nie zadziała, ponieważ i
zamrozi się na zawsze na numerze 7
. W końcu wywołanie continue
doprowadziło do tego, że pominięto dwie komendy - System.out.println(i)
i i++
. Dlatego po osiągnięciu wartości 7
zmienna i
przestanie się zmieniać, a pętla będzie działać w nieskończoność.
Napisaliśmy ten kod celowo, ponieważ to bardzo częsty błąd. Jak to naprawić?
Istnieją dwie opcje:
Opcja 1: zmiana i
przed połączeniem continue
, ale po połączeniui % 7
Opcja 2: zwiększaj i
zawsze na początku cyklu. Ale wtedy wartość początkowa i
powinna wynosić 0
.
opcja 1 | Opcja 2 |
---|---|
|
|