我的Java 2D阵列有问题。
int y = 5;
int x = 4;
int[][] map = new int[y][x];
for (int j = 0; j <= y ; j++) {
for (int l = 0; l <=x; l++) {
System.out.println("j: " + j + " l: " + l);
map[j][l] = 1;
}
}
Java到达数组中的最后一个值时会抛出此异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
答案 0 :(得分:1)
因为Java中的数组是0
索引的,所以数组的长度不是是有效的索引。因此,您应该在for循环中使用<
而不是<=
:
for (int j = 0; j < y; j++) {
for (int l = 0; l < x; l++) {
System.out.println("j: " + j + " l: " + l);
map[j][l] = 1;
}
}
答案 1 :(得分:0)
对Java arrays
进行了索引0
,因此请在=
循环中删除for
。
int y = 5;
int x = 4;
int[][] map = new int[y][x];
for (int j = 0; j < y ; j++) {
for (int l = 0; l <x; l++) {
System.out.println("j: " + j + " l: " + l);
map[j][l] = 1;
}
}
答案 2 :(得分:0)
从两个循环中删除等于
int y = 5;
int x = 4;
int[][] map = new int[y][x];
for (int j = 0; j < y; j++) {
for (int l = 0; l < x; l++) {
System.out.println("j: " + j + " l: " + l);
map[j][l] = 1;
}
}
由于5的大小为5,因此没有列。因此索引的取值类似于0、1、2、3、4。第4行的索引也一样。由于那一个的大小为4,因此索引将变为0、1、2、3
答案 3 :(得分:0)
在Java中,数组索引从0
到length-1
。
因此,在您的情况下,从0
到y-1 = 4
,从0
到x-1 = 3
。您的输出似乎完全正常。 j
的第一个值应为0。j
有5个不同的值,而l
有4个不同的值。
在for循环中将<=
改回<
。 (这部分会导致错误:l
不能从0
到4
,只能从0
到3
)