Break i continue z etykietami
Wszyscy dobrze znamy sposoby przerywania pętli. Możemy to zrobić na wiele sposobów. Możemy użyć słowa kluczowego return
, które zakończy działanie aktualnie wykonywanej metody. Możemy wykorzystać słowo kluczowe break
, które przerwie wykonywanie pętli w której się znajdzie. Możemy również wykorzystać słowo kluczowe continue
, które przerwie wykonywanie aktualnej iteracji i rozpocznie kolejną (jeśli warunki na to pozwalają).
A czy ktoś z Was pamięta, że continue
oraz break
mogą być wykorzystane z użyciem etykiet? Otóż mogą! Kiedy może się nam przydać taka możliwość? Wtedy kiedy operujemy na zagnieżdżonych pętlach i przerwanie pętli zewnętrznej zależy od warunków jakie możemy sprawdzić w pętli wewnętrznej.
Spójrzmy na poniższy kod. Przykład jest mało praktyczny i ma za zadanie jedynie pokazać w jaki sposób możemy wykorzystać etykiety.
package info.wromanek;
public class LabeledContinue {
public static void main(String[] args) {
outerLoop:
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
if (i == j) {
System.out.println();
continue outerLoop;
}
System.out.print(i * j + "\t");
}
System.out.println();
}
}
}
Mamy dwie zagnieżdżone pętle, które wewnątrz robią jakieś obliczenia. W przypadku kiedy zmienne i
oraz j
będą sobie równe, nie chcemy obliczać wyników. Przerywamy wykonywanie aktualnej iteracji pętli zewnętrznej oznaczonej etykietą outerLoop
stosując instrukcję continue outerLoop.
W sposób identyczny możemy wykorzystać instrukcję break
. Zachęcam do przeczytania artykułu na ten temat na stronach tutoriala Oracle.