2012-07-15 21 views
5

Nadal zaczynam w Javie - i wszelkie wskazówki byłyby świetne w tym. Zasadniczo mam nadzieję utworzyć tablicę, a następnie przypisać wartości do tej tablicy w pętli for. Kod mam w tej chwili jest:Przypisywanie wartości tablicy w pętli for java

int i; 
int[] testarray = new int[50]; 

for (i = 0; i <=50; i++) { 
testarray[i]=i; 
} 

Wszystko co chcę zrobić, to tablicę z każdego wpisu numer iteracji (przy użyciu tej metody) znam jej naprawdę proste, ale czuję się tak, jakbym przegapili coś ważnego podczas nauki podstaw! Dzięki!

+0

Co jest nie tak z aktualnym kodem? Dla mnie wygląda dobrze. – Antimony

Odpowiedz

10

Wszystko jest w porządku z wyjątkiem warunku STOP:

for (i = 0; i < 50; i++) { 

Ponieważ matryca ma rozmiar 50, i indeksy zaczynają się od 0, ostatni indeks to 49.

Należy ograniczyć zakres i, trudno uniknąć kodowania długości wszędzie (nie powtarzaj się zasada) i przestrzegać konwencji nazewnictwa camelCase:

int[] testArray = new int[50]; 

for (int i = 0; i < testArray.length; i++) { 
    testArray[i]=i; 
} 
+0

Perfect - wielkie dzięki. Nie mogłem uwierzyć, że to przegapiłem! –

+0

Przeczytaj komunikaty o błędach i spróbuj zrozumieć, co one oznaczają, zamiast traktować je jako flagę błędu. Prawdopodobnie komunikat o błędzie powiedział: ArrayOutOfBoudsException i prawdopodobnie powiedział ci indeks, do którego próbowałeś uzyskać dostęp, ale był poza zasięgiem. –

6

Twoja tablica ma 50 elementów, a twoja pętla przechodzi przez 51 elementów (od 0 do 50).

Wystarczy zmienić kod w celu:

int[] testarray = new int[50]; 

for (int i = 0; i < 50; i++) { 
    testarray[i] = i; 
} 

lub lepiej:

int[] testarray = new int[50]; 

for (int i = 0; i < testarray.length; i++) { 
    testarray[i] = i; 
} 
+0

Możesz także przenieść deklarację i do pętli for, a nie poza pętlę. –

+0

@kevin, masz rację :) – lhlmgr

0

Używaj długość tablicy zamiast twarde kodowania 50.

for (i = 0; i <testarray.length; i++)