多次元配列を満たす方法は?
int[][] array = new int[4][6];
Arrays.fill(array, 0);
試してみましたが動作しません。
For-eachを使用した提案を次に示します。
for (int[] row : array)
Arrays.fill(row, 0);
あなたはそれが動作することを確認することができます
System.out.println(Arrays.deepToString(array));
補足:配列を作成するので、塗りつぶしの直前に、実際に塗りつぶしは必要ありません(本当にゼロが必要である限り)。 Javaは、すべての配列要素を対応するデフォルト値に初期化し、int
の場合は0です:-)
これを試して:
for(int i = 0; i < array.length; i++) {
Arrays.fill(array[i], 0);
}
私はそれをテストしていませんが、うまくいくと思います。
配列は実際には配列の配列なので、各行をループして、行ごとに個別に塗りつぶすことができます。
まず、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;
}
これは、より高次元の配列でも同様に機能します。