Отображение массива, созданного в конструкторе [duplicate]

Чтобы включить полное сообщение об ошибках, добавьте это в свой скрипт:

error_reporting(E_ALL);

Это приводит к появлению даже минимальных предупреждений. И на всякий случай:

ini_set('display_errors', '1');

заставит отображать ошибки. Это должно быть отключено на рабочих серверах, но не при разработке.

39
задан Jim Garrison 29 October 2013 в 03:49
поделиться

9 ответов

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

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

for (int[] row : array)
{
    Arrays.fill(row, 0);
    System.out.println(Arrays.toString(row));
}
7
ответ дан ashika 21 August 2018 в 12:05
поделиться
  • 1
    Это решение будет печатать ваш массив с (0,0) в верхнем левом углу (что является соглашением для большинства вещей в CS, например, размещением графического интерфейса пользователя или пиксельным расположением на изображении). Во многих сценариях, отличных от cs, вы хотели бы (0,0) находиться в левом нижнем углу, хотя в этом случае цикл foreach не будет работать. – Max von Hippel 3 March 2016 в 18:59
|1 2 3|
|4 5 6| 

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

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

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

[[1,2,3],[4,5,6]]
1
ответ дан Grzegorz Górkiewicz 21 August 2018 в 12:05
поделиться

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

System.out.println(Arrays.deepToString(array).replace("], ", "]\n").replace("[[", "[").replace("]]", "]"));
5
ответ дан matthewpliddy 21 August 2018 в 12:05
поделиться

@ Ответ Ашики работает фантастически, если вы хотите (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) для реверса заказ во время печати. ​​

1
ответ дан Max von Hippel 21 August 2018 в 12:05
поделиться

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

   for (int[] row : matrix){
    System.out.println(Arrays.toString(row));
   }
3
ответ дан Plcode 21 August 2018 в 12:05
поделиться

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

Используйте ниже для печати 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));
92
ответ дан Prabhakaran 21 August 2018 в 12:05
поделиться

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

for (int[] x : array)
{
   for (int y : x)
   {
        System.out.print(y + " ");
   }
   System.out.println();
}
11
ответ дан snr 21 August 2018 в 12:05
поделиться
0
ответ дан Mohammad Usman 1 November 2018 в 06:02
поделиться
0
ответ дан suvojit_007 1 November 2018 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: