Как заполнить многомерный массив?
int[][] array = new int[4][6];
Arrays.fill(array, 0);
Я попробовал, но это не работает.
Как заполнить многомерный массив?
int[][] array = new int[4][6];
Arrays.fill(array, 0);
Я попробовал, но это не работает.
Здесь предложение, использующее для каждого:
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;
}
Это работает аналогично для многомерных массивов.
Смотрите так:
Arrays.fill(array[0], 0);
Arrays.fill(array, array[0]);