Pętla for each - w czym jest problem?

0

Krótko i na temat:

int[] tab = {1,2,3,4,5};

for(int i : tab)
     System.out.println(tab[i]);

Wynik:

2
3
4
5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
	at pl.projects.first.Main.main(Main.java:18)

W czym problem?

0

Jeśli chcesz wyświetlić zawartość tablicy, to:

for(int i : tab)
     System.out.println(i);
0

for(int i : tab) Ci iteruje po elementach tablicy: czyli po liczbach od jedynki do piątki włącznie. Tak więc System.out.println(tab[i]) będzie wyświetlać kolejno tab[1] (czyli 2) do tab[5] — które nie istnieje, więc program wybucha.

0

Gdybyś miał tablicę od zera do np czterech i tak samo zrobił wtedy wyświetliły by Ci się wszystkie elementy :)

0

Zamiast:

for(int i : tab)
     System.out.println(tab[i])

napisz:

System.out.println(java.util.Arrays.toString(tab));

ew. jak się upierasz na tę pętlę, to:

for(int a: tab) {
     System.out.println(a);
}

W oryginalnym kodzie miałeś następujące błędy / problemy:

  • użycie wartości tablicy jako (nieistniejącego) indeksu tablicy (błąd który zgłosił program)
  • używanie nazwy "i" tam gdzie chodziło o wartość a nie indeks elementu (niewłaściwe nazewnictwo które doprowadziło do faktycznego błędu)
  • brak klamerek zamykających ciało pętli (styl)
0

Przyzwyczajenie z innego języka jak strzelam

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.