java—初始化只有行数的2d数组

aydmsdu9  于 2021-07-11  发布在  Java
关注(0)|答案(5)|浏览(487)

因此,如果只声明行数,我对如何在java中使用2d数组有点困惑。例如:

int[][] x = new int[5][];

但是你会如何继续填充这5行呢?我想您需要先声明每一行的大小,但我想不出一种方法。如果我试着做

x[0][0] = 5;

编译器告诉我 x[0] 为空。
谢谢你的帮助,提前谢谢。

wpcxdonn

wpcxdonn1#

您试图定义一个2d数组:首先您指定了行的数量,但没有指定列的数量及其必要性。
例如,我为第一行定义了两列并赋值:

int[][] x = new int[5][];
x[0] = new int[2];
x[0][0] = 5;
System.out.println(x[0][0]);

为了更好地理解2d阵列,您需要阅读更多内容:
https://www.programiz.com/java-programming/multidimensional-array

ijnw1ujt

ijnw1ujt2#

二维数组的元素是一维数组。如果直接定义数组 new int[5][4] 那么每行的长度是 4 ,否则可能会有所不同。当您创建一个具有未定义行长度的二维数组时,它的每个元素(实际上是1d数组)都尚未初始化,并且是空的 null . 创建1d数组时 int[] 默认情况下,它是用零初始化的。如果直接定义二维数组,则其行的元素将初始化为零。

二维阵列初始化

可以定义列长度而不定义行长度:

int[][] arr = new int[5][];

arr[0] = new int[]{1, 2, 3};
arr[3] = new int[2];
arr[3][1] = 9;
arr[4] = new int[]{3, 3, 2, 1, 6, 7};
// output:
[1, 2, 3]
null
null
[0, 9]
[3, 3, 2, 1, 6, 7]

您可以定义列和行长度:

int[][] arr2 = new int[3][3];
arr2[0][0] = 1;
// output:
[1, 0, 0]
[0, 0, 0]
[0, 0, 0]

您可以在创建时定义二维数组的每个元素,也可以使用保留行进行进一步的操作:

int[][] arr3 = new int[][]{{1, 2, 3}, {4, 5}, {6}, null};
// output:
[1, 2, 3]
[4, 5]
[6]
null
g6ll5ycj

g6ll5ycj3#

您无法访问 x[0][0] 因为行中不存在列 x[0] . 在使用一行中的每一列之前,需要对其进行初始化:

x[0] = new int[5];
x[1] = new int[5];

或使用循环:

for (int i = 0; i < 5; i++) {
    x[i] = new int[5];
}
rbpvctlc

rbpvctlc4#

简单地做:

public class ClassName {
    public static void main(String[] args) {
        //Assignment of multi-dimensional array
        int[][] multiarray = new int[2][3];
        // assign value to row "0" and col "0" index
        multiarray[0][0] = 23;
        System.out.println("My Age is:" + multiarray[0][0]);
    }
}
wz3gfoph

wz3gfoph5#

int ROWS = 5;
int COLUMNS = 12;
int[][] x = new int[ROWS][];

初始化所有 ROWS 归零:

IntStream.range(0, ROWS).forEach(i -> {
    x[i] = new int[COLUMNS];
});

如果你想初始化到一个不同的值例如。 -1 :

IntStream.range(0, ROWS).forEach(i -> {
    x[i] = new int[COLUMNS];
    Arrays.fill(x[i], -1);
});

相关问题