|
|
Blackys
|
| Titel: out of bounds |
13.11.2011 18:44 |
|
|
Anmeldungsdatum: 13.11.2011
Beiträge: 1
|
bei dieser methode bekomm ich die Fehlermeldung
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at Test.main(Test.java:26) aber des array is doch gar net out of bound also nicht größer als angegeben. Findet jmd den Fehler
public class Test { public static void main (String[] args) { int i = 0; int j = 0; int k = 0; int numbers = 3; int[][] lectureHall = new int[10][15]; int w = 0; int[] n = new int [numbers]; int laenge = n.length; int[][] Rückgabe = new int [2][numbers]; while(i < 10){ // while(j < 15){ if(lectureHall[i][j] == 0) { while (k < laenge-1 ) { if((lectureHall[i][j+k]==0) || (lectureHall [i][j-k]== 0)) { k++; if(k==laenge-1) { while(j <= j+k) { Rückgabe[1][numbers-w] = j+k; k--; ++w; } while(w >= 0) Rückgabe[2][numbers-w] = i; --w; } System.out.println( Rückgabe); } else{ j++; } } } } } } }
|
 |
|
| |
|
applecake
|
| Titel: out of bounds |
14.11.2011 09:17 |
|
|
Anmeldungsdatum: 13.07.2011
Beiträge: 29
|
Zitat: while (j <= j + k){ Rückgabe[1][numbers - w] = j + k; k--; ++w; }
Dein Problem hier ist, dass du auf den Index 3 zugreifst, der nicht existiert. Wenn du ein Array mit 3 Indizes erstellst, kannst du auf die Indizes 0, 1 und 2 zugreifen. Java ist bei Indizes 0-basiert, d. h. der erste Index hat 0, der zweite 1, der dritte 2, usw. Wenn du auf den Index 3 zugreifen willst muss dein Array 4 Indizes groß sein.
Und nochwas: j wird immer kleiner sein als j + k (es sei denn k ist negativ, was soweit ich sehe hier nicht der Fall ist) ==> Endlosschleife. Und daher wird der Aufruf auf "Rückgabe"(Java Code Convention - schonmal gehört?) am Index [1] [3-w] früher oder später auf einen negativen Bereich zugreifen.
Wenn ich jetzt mal fragen darf, was soll das Programm eigentlich genau tun?
lg
________________________________________ http://www.sysprofile.de/id160900
|
 |
|
| |
|
|
|
|
|
|