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

Java - лучший способ печати 2D-массива?

Мне было интересно, какой лучший способ печати 2D-массива был. Это какой-то код, который у меня есть, и мне просто интересно, хорошо это или нет. Также исправьте меня в любых других ошибках, которые я сделал в этом коде, если вы найдете их. Спасибо!

int rows = 5;
int columns = 3;

int[][] array = new int[rows][columns];

for(int i = 0; i<rows; i++)
    for(int j = 0; j<columns; j++)
        array[i][j] = 0;

for(int i = 0; i<rows; i++)
{
    for(int j = 0; j<columns; j++)
    {
        System.out.print(array[i][j]);
    }
    System.out.println();
}
4b9b3361

Ответ 1

Вы можете печатать простым способом.

Используйте ниже для печати 2D-массива

int[][] array = new int[rows][columns];
System.out.println(Arrays.deepToString(array));

Используйте ниже для печати массива 1D

int[] array = new int[size];
System.out.println(Arrays.toString(array));

Ответ 2

Я бы предпочел в целом foreach, когда мне не нужно делать арифметические операции с их индексами.

for (int[] x : array)
{
   for (int y : x)
   {
        System.out.print(y + " ");
   }
   System.out.println();
}

Ответ 3

Простой и чистый способ печати 2D-массива.

System.out.println(Arrays.deepToString(array).replace("], ", "]\n").replace("[[", "[").replace("]]", "]"));

Ответ 4

Нет ничего плохого в том, что у вас есть. Двойные вложенные циклы должны легко усваиваться любым, кто читает ваш код.

Тем не менее, следующая формулировка более плотная и более идиоматическая java. Я бы посоветовал подумать о некоторых статических классах утилиты, таких как массивы и коллекции, раньше, чем позже. Тонны шаблона могут быть сбриты благодаря их эффективному использованию.

for (int[] row : array)
{
    Arrays.fill(row, 0);
    System.out.println(Arrays.toString(row));
}

Ответ 5

Это лучшее, что я думаю:

   for (int[] row : matrix){
    System.out.println(Arrays.toString(row));
   }

Ответ 6

Двухлинейный с новой линией:

for(int[] x: matrix)
            System.out.println(Arrays.toString(x));

Один лайнер без новой линии:

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

Ответ 7

Ответ @Ashika работает фантастически, если вы хотите (0,0) быть представленным в верхнем левом углу, на обычное соглашение CS. Если, однако, вы предпочтете использовать обычное математическое соглашение и поместите (0,0) в нижний левый угол, вы можете использовать это:

LinkedList<String> printList = new LinkedList<String>();
for (char[] row: array) {
    printList.addFirst(Arrays.toString(row));;
}
while (!printList.isEmpty())
    System.out.println(printList.removeFirst());

Это использовало LIFO (Last In First Out), чтобы отменить порядок во время печати. ​​

Ответ 8

|1 2 3|
|4 5 6| 

Используйте следующий код для печати значений.

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

Результат будет выглядеть так (вся матрица в одной строке):

[[1,2,3],[4,5,6]]

Ответ 9

Из документа Oracle Offical Java 8:

public static String deepToString(Object[] a)

Возвращает строковое представление "глубокого содержимого" указанный массив. Если массив содержит другие массивы в качестве элементов, строковое представление содержит их содержимое и так далее. Этот способ Предназначен для преобразования многомерных массивов в строки.

Ответ 10

Попробуй это,

for (char[] temp : box) {
    System.err.println(Arrays.toString(temp).replaceAll(",", " ").replaceAll("\\[|\\]", ""));
}