"Cześć Amigo!

"Cześć Ellie."

„Przestudiowałeś już pętle i to jest fajne”.

„Zgadzam się! Teraz zupełnie nie wiem, jak bez nich żyć”.

„Czasami możesz się bez nich obejść… Ale częściej będziesz ich potrzebować. Dzisiaj porozmawiamy o sytuacji, w której musisz wyjść z pętli przed czasem”.

„Czy masz na myśli, kiedy warunek kontynuacji pętli jest spełniony, ale nadal musisz wyjść z pętli?”

„Dokładnie! Czasami brzmisz, jakbyś już był programistą. W każdym razie, aby wyrwać się z pętli przed terminem, możesz użyć instrukcji break . Spójrz na następujący przykład:

Kod Wyjaśnienie
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Program będzie odczytywał linię z klawiatury, dopóki nie wpiszesz "exit".

„Rozumiem. Program odczytuje wiersze z konsoli. Jeśli wpiszesz "exit", to isExitzmienna zmieni się na true, warunek pętli będzie równy , a pętla się zakończy”.!isExitfalse

„Zgadza się. Tak więc Java ma specjalną breakinstrukcję, która pozwala uprościć taką logikę. Jeśli breakinstrukcja jest wykonywana w pętli, pętla natychmiast się kończy. Program rozpocznie wykonywanie instrukcji następującej po pętli. Instrukcja jest bardzo krótka :

break;

„Oto, w jaki sposób możesz użyć tego breakstwierdzenia, aby przepisać przykład, który właśnie omówiliśmy:

Kod Wyjaśnienie
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
Program będzie odczytywał linię z klawiatury, dopóki nie wpiszesz "exit".

- Może to zapamiętam. Czuję, że się przyda.

„Ale breaknie jest to jedyna instrukcja Java, która pozwala kontrolować zachowanie pętli. Java również zawiera instrukcję continue. Jeśli wykonasz continueinstrukcję wewnątrz pętli, bieżąca iteracja pętli zakończy się przed terminem”.

„Co rozumiesz przez iterację?”

„Iteracja pętli to jedno wykonanie ciała pętli. continueInstrukcja przerywa bieżącą iterację pętli, ale w przeciwieństwie do breakinstrukcji nie kończy samej pętli. Instrukcja jest również krótka:

continue;

„Więc continueinstrukcja może być użyta w pętli, jeśli chcemy„ pominąć ”wykonanie niektórych iteracji pętli?”

„Dokładnie. Czy rozumiesz różnicę między breaki continue? Jeśli musisz znaleźć siódemkę wśród 20 niepowtarzalnych cyfr, jakiego rodzaju pętli i instrukcji przerwania pętli byś użył?

„Hmm… przejrzałbym wszystkie liczby, a jeśli znajdę 7, wykonałbym break”.

„Co zrobić, jeśli chcesz wyświetlić liczby od 1do 20z wyjątkiem liczb podzielnych przez 7?”

„Cóż, tutaj prawdopodobnie potrzebuję continue, ponieważ nie chcę wychodzić z pętli. Ale nadal nie do końca rozumiem”.

„Pozwól, że pokażę ci, jak rozwiązać ten problem. Tak może wyglądać ten kod”.

Kod Wyjaśnienie
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Program wyświetla liczby od 1do 20. Jeśli liczba jest podzielna przez 7(reszta z dzielenia przez 7to 0 ), to pomijamy wyświetlanie liczby.

- Dlaczego patrzysz na mnie tak podejrzliwie, Ellie? Czy jest tu jakiś haczyk?

„Nie da się oszukać, Amigo! Rzeczywiście, ten kod nie zadziała poprawnie . Wyświetli się pierwsze 6 cyfr, a potem ijuż na zawsze utknie na numerze 7. W końcu continueinstrukcja pomija dwie inne instrukcje: System.out.println(i)i i++. Jako w rezultacie, gdy osiągniemy wartość 7, zmienna iprzestanie się zmieniać i znajdziemy się w nieskończonej pętli. Napisałem kod w ten sposób celowo, aby zilustrować bardzo częsty błąd.

„Jak to naprawić?”

„Są tu dwie opcje:”

Opcja 1: zmień iprzed wykonaniem continue, ale poi % 7

Opcja 2: zawsze zwiększaj ina początku pętli. Ale wtedy iwartość początkowa musi być 0.

opcja 1 Opcja 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}

"Wspaniale! Postaram się nie popełnić tego błędu."

"Będę pamiętał o twojej obietnicy!"