Подтвердить что ты не робот

Java Arrays.fill()

Как заполнить многомерный массив?

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

Я попробовал, но это не работает.

4b9b3361

Ответ 1

Здесь предложение, использующее для каждого:

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

Вы можете убедиться, что он работает, выполняя

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

Замечание: поскольку вы создаете массив, прямо перед заполнением, заливка на самом деле не нужна (пока вы действительно хотите нули в ней). Java инициализирует все элементы массива соответствующими значениями по умолчанию, а для int - 0: -)

Ответ 2

Попробуйте следующее:

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

Я не тестировал его, но думаю, он должен работать.

Ответ 3

Поскольку массив действительно представляет собой массив массивов, возможно, вы можете попытаться выполнить цикл по каждой строке и выполнить заполнение для каждого из них индивидуально.

Ответ 4

Во-первых, обратите внимание, что 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;
}

Это работает аналогично для многомерных массивов.

Ответ 5

Смотрите так:

Arrays.fill(array[0], 0);
Arrays.fill(array, array[0]);