В Java, как и практически в любом языке programowanie, istnieją narzędzia do zapewnienia powtarzania określonego fragmentu kodu lub, jak się je nazywa, cykli. Pętle Java są reprezentowane przez operatorów, takich jak for i while, a także ich odmiany. Z reguły pętle służą do przechodzenia przez jednowymiarowe i wielowymiarowe tablice oraz iterowalne struktury danych (w tym kolekcje) w celu znalezienia określonych elementów i dalszych operacji z nimi. Nie jest to jednak jedyny sposób użycia narzędzia takiego jak pętla Java. Przypadki użycia zostaną dostarczone w miarę ich przeglądu.
Podstawowym operatorem pętli w Javie jestpodczas Fragment kodu zamknięty w jego ciele będzie powtarzany, dopóki warunek wyrażenia zamknięty w nawiasach nie spełni logicznej wartości prawdy. Ogólna forma instrukcji while jest następująca:
podczas (warunek) {
// ciało pętli
}
Gdy tylko wartość warunku logicznego przestanie być prawdziwa, kod zawarty w treści pętli przestanie być wykonywany, a kontrola zostanie przekazana do linii natychmiast po niej.
Dla jasności spójrzmy na przykład pokazany na poniższym rysunku:
Zadeklarowana liczba zmiennych początkowo mawartość 1. Następnie widzimy wyrażenie logiczne ujęte w nawiasy po nazwie operatora. To będzie prawda, czyli zwraca true tak długo, jak wartość zmiennej count jest mniejsza lub równa 10. W treści pętli, przy każdym przejściu (iteracji), wartość zmiennej jest zwiększana o 1 i wyświetlana na ekranie konsoli. Zauważ, że gdy zmienna osiągnęła 11, pętla przestała działać.
Jeśli wartość zmiennej count byłaby początkowo równa 11, wtedy warunek pętli byłby fałszywy, a program nawet nie wszedłby do swojego ciała.
Warto zauważyć, że składnia Javy pozwalaużyj instrukcji while bez treści. Podajmy przykład. Załóżmy, że mamy dwie zmienne i = 100 i j = 200, mamy do czynienia z zadaniem programowego obliczenia ich średniej arytmetycznej - do tego można użyć „pustki”, podczas gdy:
natomiast (++ i <--j);
W rezultacie wartość jednej z dwóch zmiennych będzie równa średniej ich wartości początkowych. Jak widać, pętla działała dobrze bez treści i wykonywała wszystkie niezbędne czynności w wyrażeniu warunkowym.
W poprzednich przykładach, jeśli wyrażenie warunkowepoczątkowo zwrócił false, a następnie wykonanie programu zignoruje treść pętli i przejdzie dalej. Często jednak zdarzają się sytuacje, w których wykonanie kodu zawartego w ciele pętli jest obowiązkowe przynajmniej raz, niezależnie od prawdziwości wyrażenia warunkowego. Innymi słowy, zdarza się, że wymagane jest sprawdzenie prawdziwości wyrażenia warunkowego nie na początku, ale na końcu cyklu. Odmiana pętli while o nazwie do-while może zapewnić tę funkcjonalność. Ma następującą postać:
robić {
// ciało pętli
} podczas (warunek);
Jak widać, najpierw do wykonania trafia ciało pętli, a dopiero potem sprawdzana jest prawdziwość warunku - i tak przy każdej iteracji.
Powyższy kod będzie działał mniej więcej taktak samo jak w przypadku zwykłej chwili. Jednak gdybyśmy przypisali wartość 11 do zmiennej count, treść pętli byłaby nadal wykonywana raz, zanim operator sprawdziłby, czy wyrażenie jest prawdziwe.
Pętla for jest wszechstronna iwydajna forma językowa w Javie. Przed piątą wersją Java SDK istniała tylko jedna tradycyjna forma wyrażenia for, a potem pojawiła się nowa – dla każdego. W tym rozdziale zapoznamy się z tradycyjną formą operatora. dla Javy pętla wygląda tak:
Zanim kontrola zostanie przekazana do kodu w cielepętla, najpierw inicjowana jest zmienna i, która ma działać jako licznik. Następnie sprawdzane jest wyrażenie warunkowe, w którym licznik jest porównywany z określoną wartością, a jeśli zwróci true, wykonywane jest ciało pętli. Następnie wartość licznika jest zmieniana o z góry określony krok, a wyrażenie warunkowe jest sprawdzane ponownie i tak dalej, aż warunek stanie się fałszywy. Poniższy schemat blokowy ilustruje wszystkie etapy cyklu.
Aby lepiej zrozumieć, oto przykład działania pętli for Java:
Widzimy, że licznik jest używanyzmienna loopVal. Po każdej iteracji pętli jej wartość wzrośnie o 1 i będzie to trwać aż do 11. Zauważ, że zmienną sterującą można zadeklarować poza instrukcją for, ale jeśli nie zamierzasz używać tej zmiennej nigdzie poza pętli, zaleca się zadeklarowanie jej bezpośrednio w instrukcji. Należy pamiętać, że zmienna zadeklarowana w samej instrukcji jest objęta zakresem samej pętli.
Są sytuacje, w których musisz zadeklarowaćkilka zmiennych sterujących pętlą. W przypadku Javy pętla umożliwia określenie dwóch lub więcej zmiennych oddzielonych przecinkami, co można zrobić zarówno podczas ich inicjalizacji, jak i podczas iteracji. Taki operator będzie wyglądał tak:
for (int i = 1, int j = 10; i <j; ++ i, --j) {}
Z każdą iteracją wartość zmiennej i wzrośnie o 1, a wartość zmiennej j zmniejszy się o 1. Iteracje będą wykonywane do momentu, gdy i będzie większe lub równe j.
Pętla for jest dość elastycznakonstruktu, ponieważ wszystkie trzy jego części (inicjalizacja, warunek i przyrost / dekrementacja) mogą być używane poza etykietą. Na przykład zamiast wyrażenia warunkowego ze zmienną kontrolną można podstawić dowolną zmienną logiczną.
wyjście logiczne = fałsz;
for (int i = 0;! exit; ++ i) {
wyjście = prawda;
}
W powyższym przykładzie możemy zaobserwować, jak działapętla jest całkowicie niezależna od zmiennej sterującej i, a liczba iteracji zależy wyłącznie od momentu, w którym wyjście zmiennej staje się prawdziwe. Co więcej, zmienną sterującą można całkowicie usunąć z pętli i nie wpłynie to w żaden sposób na jej działanie: for (;! Exit;) {}. Chociaż nie jest to najmądrzejszy sposób programowania, czasami może być przydatny. Najważniejsze jest przewidzenie sytuacji, w której zmienna przyjmie wartość niezbędną do wyjścia z pętli, aby nie zamienić jej w nieskończoną.
W Javie pętlę można zadeklarować w ten sposóbsposób: dla (;;) {}. Jest to typowy przykład nieskończonej pętli ze specjalnymi warunkami przerwania. O tym, jak przerwać takie cykle, porozmawiamy nieco później.
Pętla foreach Java zawsze dotyczysekwencyjne wyliczanie elementów tablicy lub dowolnej struktury danych i wykonywanie na nich pewnych powtarzalnych operacji. Przykład takiej formy oświadczenia for pokazano poniżej:
Zmienna iteracyjna jest zadeklarowananame, a poprzednio zadeklarowana tablica ciągów nazw działa jako drugi argument operatora. Nazwa zmiennej przyjmie kolejno wartości każdego elementu tablicy, dopóki wszystkie jej elementy nie zostaną pobrane. Należy zauważyć, że typ zmiennej musi być zgodny z typem elementów, które są przechowywane w tablicy. Również zmienna name jest dostępna wyłącznie do odczytu i próba jej zmiany nie spowoduje zmiany samego elementu w tablicy.
Istnieją trzy instrukcje przerwań pętli:przerwać, wrócić i kontynuować. Pierwsze dwa są w stanie całkowicie przerwać pracę pętli, natomiast kontynuacja przerywa tylko pracę bieżącej iteracji. Jeśli celowo używasz w swoim kodzie nieskończonej pętli Java, te operatory muszą być w niej obecne. Spójrzmy na prosty przykład użycia break:
Chociaż ta instrukcja for zapewnia 11 iteracji, zostanie wykonanych tylko 8, ponieważ gdy licznik i wynosi 7, zostanie wyzwolony warunek, w którego treści znajduje się instrukcja przerwania.
Instrukcja return działa w podobny sposób, z tą różnicą, że nie tylko wychodzi z pętli Java, ale także z metody, w której pętla jest umieszczona.
Pamiętaj, że przerwa będzie przerywać.tylko cykl w ciele, którego bezpośrednio się znajduje, tj. jeśli użyjesz go w zagnieżdżonej pętli, zewnętrzna pętla nie przestanie działać. W tym celu instrukcja break może być użyta jako cywilizowana forma goto.
W tym wariancie ten operator jest używany ww połączeniu z etykietą, która pozwala zorganizować wyjście nie tylko z pętli, ale także z dowolnego bloku kodu. Etykieta to odpowiednio nazwany identyfikator, po którym następuje dwukropek. Etykieta jest deklarowana na początku bloku kodu do oznaczenia. Aby przerwać wykonywanie zaznaczonego bloku należy w odpowiednim miejscu zadeklarować: break nazwa_znacznika. Rozważ przykład na poniższym rysunku:
Kod deklaruje trzy bloki z nazwami etykiet One,Odpowiednio dwa i trzy. Instrukcja przerwania oznaczona Two jest zagnieżdżona we wszystkich trzech blokach, ale po jej wyzwoleniu program wyjdzie z bloków Three i Two i będzie kontynuował wykonywanie w bloku One. Te. w konsoli zobaczymy dwa komunikaty: Trzy i Jeden.
Zapoznaliśmy się z pojęciem pętli w Javie,instrukcji main while i for, a także ich odpowiednio do while i for each form. Dla lepszego zrozumienia zalecamy wykonywanie ćwiczeń z wykorzystaniem tych operatorów w różnych formach, a także różnych sposobów ich przerywania i przechodzenia z jednego bloku do drugiego.