Java 2D数组无法将值写入最后一个值索引

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

我的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


有没有办法解决这个问题,我是否遗漏了什么?

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;
        }
    }