Spis treści
Pętle świetnie nadają się do iterowania (czyli przechodzenia) przez elementy tablicy. Możemy w tym celu skorzystać z pętli for w następujący sposób:
- Zmienną, używaną w pętli, zainicjalizujemy wartością 0, która jest indeksem pierwszego elementu w każdej tablicy.
- Warunek pętli napiszemy w taki sposób, by pętla zakończyła się, gdy wartość zmiennej przekroczy zakres indeksów tablicy – skorzystamy tutaj z atrybutu length tablicy.
- W instrukcji kroku będziemy zwiększać wartość zmiennej pętli o 1, dzięki czemu przejdziemy przez indeksy wszystkich elementów tablicy.
Spójrzmy na prosty przykład programu, który wypisujemy na ekran wszystkie elementy tablicy:
public class WypiszElementyTablicy { public static void main(String[] args) { int[] liczby = { -5, 100, 1, 0, 20 }; for (int i = 0; i < liczby.length; i++) { System.out.print(liczby[i] + " "); } } }
Pętlę for zapisaliśmy zgodnie z powyższym opisem. Dzięki temu, w prosty sposób jesteśmy w stanie przejść po kolei przez wszystkie elementy tablicy liczby. Na ekranie zobaczymy:
Zwróćmy uwagę, że w warunku pętli korzystamy z operatora < a nie <=. Jak już wiemy, length zwraca liczbę elementów, a ostatni element w tablicy ma zawsze indeks o jeden mniejszy od liczby elementów (ponieważ numeracja indeksów rozpoczyna się od 0). Gdybyśmy użyli z operatora <=, to w ostatnim obiegu pętli zmienna i wynosiłaby 5, a indeks 5 jest poza zakresem tablicy liczby – w takim przypadku, na ekranie zobaczylibyśmy błąd ArrayIndexOutOfBoundsException.
Moglibyśmy również przejść przez elementy tablicy w odwrotnej kolejności – wystarczy odwrócić zapis pętli for:
for (int i = liczby.length - 1; i >= 0 ; i--) { System.out.print(liczby[i] + " "); }
Tym razem, zaczynamy od ostatniego indeksu i kierujemy się do pierwszego. Na ekranie zobaczymy:
Spójrzmy na bardziej złożony przykład – program, który odpowiada na pytanie, czy w tablicy liczb znajduje się dana liczba:
public class CzyLiczbaJestWTablicy { public static void main(String[] args) { boolean znaleziona = false; int[] liczby = { -20, 105, 0, 26, -99, 7, 1026 }; int szukanaLiczba = 7; for (int i = 0; i < liczby.length; i++) { if (liczby[i] == szukanaLiczba) { znaleziona = true; break; // znalezlismy liczbe - mozemy wiec przerwac petle } } if (znaleziona) { System.out.println("Liczba zostala znaleziona!"); } else { System.out.println("Liczba nie zostala znaleziona."); } } }
Na początku programu tworzymy tablicę liczby zainicjalizowaną kilkoma liczbami. Szukaną liczbę zapisujemy natomiast w zmiennej szukanaLiczba. Zmienna znaleziona służy jako wyznacznik tego, czy udało nam się znaleźć liczbę, czy nie. Początkowo nadajemy tej zmiennej wartość false – jeżeli odnajdziemy liczbę w pętli, to zmienimy wartość na true.
Następnie, przechodzimy w pętli przez elementy tablicy liczby i porównujemy każdy z nich z szukaną liczbą. Jeżeli liczby są sobie równe, to znaczy, że znaleźliśmy szukaną liczbę w tablicy. Ustawiamy zmienna znaleziona na true oraz przerywamy pętlę – dalsze procesowanie elementów tablicy nie ma sensu, ponieważ już wiemy, że tablica zawiera szukaną liczbę.
Na końcu programu wypisujemy na ekran komunikat, w zależności do tego, czy znaleźliśmy szukaną liczbę, czy nie.
Szukana liczba to 7. W kodzie programu w tablicy liczby znajduje się taka liczba – dlatego na ekranie zobaczymy następujący komunikat: