20

如何填充多维数组?

int[][] array = new int[4][6]; 
Arrays.fill(array, 0);

我试过了,但它不起作用。

4

5 回答 5

30

这是使用 for-each 的建议:

for (int[] row : array)
    Arrays.fill(row, 0);

您可以通过以下方式验证它是否有效

System.out.println(Arrays.deepToString(array));

附注:由于您正在创建数组,就在填充之前,实际上不需要填充(只要您真的想要其中的零)。Java 将所有数组元素初始化为其对应的默认值,因为int它是 0 :-)

于 2011-03-09T21:59:02.153 回答
13

尝试这个:

for(int i = 0; i < array.length; i++) {
    Arrays.fill(array[i], 0);
}

我还没有测试过,但我认为它应该可以工作。

于 2011-03-09T21:56:56.743 回答
2

由于数组实际上是一个数组数组,也许您可​​以尝试遍历每一行并分别为每一行进行填充。

于 2011-03-09T22:04:45.867 回答
1

首先,请注意这0是 int 数组的默认值,因此您不必用 0 填充某些内容。

如果您希望您的数组保持真正的多维,您将需要一个循环。

public static void fill(int[][] array, int element) {
    for(int[] subarray : array) {
        Arrays.fill(subarray, element);
    }
}

如果您只需要一个填充相同元素的二维数组并且不想稍后更改子数组,则可以使用此技巧:

public static int[][] create2DArray(int length, int subLength, int element) {
    int[] subArray = new int[subLength];
    Arrays.fill(subArray, element);
    int[][] array = new int[length][];
    Arrays.fill(array, subArray);
    return array;
}

这类似地适用于高维数组。

于 2011-03-09T22:02:05.970 回答
-3

这样看:

Arrays.fill(array[0], 0);
Arrays.fill(array, array[0]);
于 2016-08-18T17:19:46.727 回答