Java 2D数组无法将值写入最后一个值索引
我的Java2D数组有问题Java 2D数组无法将值写入最后一个值索引,java,arrays,multidimensional-array,nullpointerexception,2d,Java,Arrays,Multidimensional Array,Nullpointerexception,2d,我的Java2D数组有问题 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; } } 将for循环更改为“j
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;
}
}
将for循环更改为“j有没有办法解决这个问题,我是否遗漏了什么?Java
数组
被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;
}
}
inty=5;
int x=4;
int[]map=新的int[y][x];
对于(int j=0;j 对于(int l=0;l,因为Java中的数组是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;
}
}
inty=5;
int x=4;
int[]map=新的int[y][x];
对于(int j=0;j
因为列的大小是5,所以没有列是5。所以索引类似于0、1、2、3、4。第4行也是如此。因为该列的大小是4,所以索引类似于0、1、2、3。在java中,数组索引是从0
到length-1
因此,在您的例子中,从0
到y-1=4
和从0
到x-1=3
。您的输出似乎完全正常。j
的第一个值应该是0。对于j
有5个不同的值,对于l
有4个不同的值
更改回好的,谢谢,我还以为数组长度也是从0索引的-但显然不对?@Radek数组
的最后一个可寻址索引是array.length-1
(因为它是从0
索引的)
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;
}
}
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;
}
}