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.