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

同じ要素で満たされた 2D 配列のみが必要で、後でサブ配列を変更したくない場合は、次のトリックを使用できます。

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 に答える