JavaRush /Blog Java /Random-PL /Dla pętli w Javie

Dla pętli w Javie

Opublikowano w grupie Random-PL
Mówią, że najlepszy programista to leniwy programista. Zamiast wykonywać kilka razy tego samego typu czynności, wymyśli algorytm, który wykona tę pracę za niego. I zrobi to dobrze, żeby nie było potrzeby powtarzania. Jak używać pętli for w Javie - 1Aby uniknąć ciągłego pisania tego samego kodu, wymyślono pętle. Wyobraźmy sobie, że musimy wyświetlić na konsoli liczby od 0 do 99. Kod bez pętli:
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// I tak dalej
Ten kod zajmie 100 linii! Tak wiele. A oto jak by to wyglądało z pętlą:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
Tylko 3 linie!

Co to są pętle for?

Pętla for to struktura kontrolna kodu programu, która przerywa liniowość wykonywania algorytmu i pozwala na wielokrotne wykonanie określonego kodu. Na przykład musisz wziąć 30 kropli leku. Algorytm będzie mniej więcej taki:
  1. Przygotuj szklankę.
  2. Otwórz pokrywę.
  3. Zdobądź 1 kroplę.
  4. Zdobądź 2 krople.
  5. ...
  6. Zdobądź 30 kropli.
  7. Zamknij lek.
  8. Weź otrzymaną porcję.
Algorytm ten można wyjaśnić znacznie szybciej:
  1. Przygotuj szklankę.
  2. Otwórz korek kroplowy.
  3. Zdobądź 30 kropli.
  4. Zamknij lek.
  5. Weź otrzymaną porcję.
Pętli for używamy niemal codziennie w rozmowach z innymi ludźmi: „...20 kroków w dół ulicy…”, „...zrób 10 powtórzeń i kolejne 5 2 razy wolniej...”, „.. .zrób 5 zakupów w różnych kategoriach i odbierz nagrodę…” Mógłbym tak długo wymieniać, ale sens jest jasny. W Javie pętla for jest niezbędna, aby kod był krótki i zwięzły.

Jak działa pętla for

Pętli for używa się w następujący sposób:
for(<начальная точка>; <stan выхода>; <операторы счетчика>) {
	// Treść pętli
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
Wniosek:

0
1
2
3
4
Jeśli przetłumaczymy ten wpis na język ludzki, otrzymamy następujący komunikat: „ Utwórz zmienną i o wartości początkowej 0, aż osiągnie 5, dodaj do niej 1 i przy każdym kroku zapisz wartość i do konsoli ”. Pętla for w Javie składa się z trzech etapów, które można przedstawić na poniższym diagramie: Jak korzystać z pętli for w Javie - 2Warunkiem wyjścia z pętli jest wyrażenie logiczne. Jeśli jest fałszywe, pętla się zakończy. W powyższym przykładzie zmienna ijest zwiększana o 1. Jeśli jej wartość jest mniejsza niż 5, pętla jest kontynuowana. Ale gdy tylko iosiągnie wartość większą lub równą 5, cykl się zatrzyma. Operator licznika to wyrażenie, które dokonuje konwersji zmiennej licznika. W powyższym przykładzie zmienna izostała zwiększona o 1. Oznacza to, że pętla zostanie wykonana dokładnie 5 razy. Jeśli operator licznika doda do zmiennej 2 i, wynik będzie inny:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
Wniosek:

0
2
4
Możesz także pomnożyć zmienną, podzielić, podnieść do potęgi i ogólnie robić, co chcesz. Najważniejsze jest to, że wynikiem transformacji jest liczba. Ciałem pętli jest dowolny kod, który można wykonać. W powyższym przykładzie ciało pętli wysyłało wartość zmiennej i do konsoli, ale zawartość tego ciała jest ograniczona zadaniem i wyobraźnią. Podsumowując cały schemat, zasada działania tej pętli for jest następująca: kod znajdujący się w treści pętli zostanie wykonany tyle razy, ile konwersji wykona operator licznika, zanim spełniony zostanie warunek wyjścia z pętli . Jeśli ustawisz warunek wyjścia z pętli jako true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Następnie kod po pętli zostanie oznaczony błędem unreachable statement, ponieważ nigdy nie zostanie wykonany. Wyzwanie dla pomysłowości: czy w wyniku uruchomienia poniższego kodu „ Loop ended” zostanie wypisane na konsolę, czy pętla będzie działać w nieskończoność?
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Odpowiedź: będzie. Zmienna i prędzej czy później osiągnie swoją wartość maksymalną, a dalsze zwiększanie spowoduje zmianę jej w maksymalną wartość ujemną, w wyniku czego spełniony zostanie warunek wyjścia (i < = -1).

pętla forEach

Podczas pracy z pętlami czasami trzeba iterować po tablicach lub kolekcjach. Zazwyczaj można iterować po tablicy za pomocą pętli for:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
I to jest słuszne. Aby jednak iterować po wszystkich elementach tablicy, opracowano konstrukcję forEach. Jego podpis brzmi następująco:
for(<Тип element> <Nazwa переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Treść pętli
}
Możesz iterować po tablicy ciągów i drukować każdy z nich na konsoli w następujący sposób:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
Również krótko i zwięźle. Co najważniejsze, nie trzeba myśleć o liczniku i warunku wyjścia, wszystko jest już za nas zrobione.

Jak używane są pętle for

Przyjrzyjmy się teraz kilku przykładom użycia pętli for w Javie do rozwiązania różnych problemów.

Cykl odwrotny (od większego do mniejszego)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
Wniosek:

5
4
3
2
1

Kilka zmiennych i zwiększanie licznika w treści pętli

W pętli for można używać wielu zmiennych, na przykład można je przekonwertować w instrukcji licznika:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Krok: " + a + " Oznaczający: ");
   System.out.println(i);
}
Wniosek:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
Lub zadeklaruj dwie zmienne i pętlę, aż będą sobie równe:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
Wniosek:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
Jest mało prawdopodobne, aby to działanie miało jakąkolwiek wartość, ale warto wiedzieć o takiej możliwości. W pętli for można także tworzyć pętle wewnętrzne. W takim przypadku liczba kroków pętli zostanie pomnożona:
for(int i = 0; i < 5; i++) {
   System.out.print(i + " | ");
   for(int j = 0; j < 5; j++) {
       System.out.print(j + " ");
   }
   System.out.print('\n');
}
Wniosek:

0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 
3 | 0 1 2 3 4 
4 | 0 1 2 3 4
W pętli licznikowej jmożliwy jest dostęp do licznika pętli zewnętrznej. To sprawia, że ​​zagnieżdżone pętle są idealnym sposobem na przechodzenie przez tablice dwuwymiarowe, trójwymiarowe i inne:
int[][] array = { {0, 1, 2, 3, 4 },
                       {1, 2, 3, 4, 5},
                       {2, 3, 4, 5, 6},
                       {3, 4, 5, 6, 7}};

for(int i = 0; i < array.length; i++) {
   for(int j = 0; j < array[i].length; j++) {
       System.out.print(array[i][j] + " ");
   }
   System.out.print('\n');
}
Wniosek:

0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

Wcześniejsze zakończenie cyklu

Jeśli chcesz przerwać pętlę podczas przetwarzania pętli, użyj operatora break, który zatrzymuje bieżący korpus pętli. Wszystkie kolejne iteracje są również pomijane:
public void getFirstPosition(String[] stringArray, String element) {
   for (int i = 0; i < stringArray.length; i++) {
       if(stringArray[i].equals(element)) {
           System.out.println(i);
           break;
       }
   }
}
Metoda wypisze pozycję pierwszego szukanego elementu w tablicy:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
Wniosek:

1

Niekończący się cykl

Innym sposobem na utworzenie nieskończonej pętli for jest pozostawienie obszaru deklaracji licznika, warunku wyjścia i instrukcji licznika pustymi:
for (;;) {
}
Należy jednak pamiętać, że w większości przypadków nieskończona pętla jest dowodem błędu logicznego. Taka pętla musi mieć warunek wyjścia. Jak korzystać z pętli for w Javie — 3
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION