Java: la mejor forma de imprimir una matriz 2D

Me preguntaba cuál era la mejor forma de imprimir una matriz 2D. Este es un código que tengo y me preguntaba si esto es una buena práctica o no. También corrígeme en cualquier otro error que haya cometido en este código si encuentra alguno. ¡Gracias!

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(); } 

Puedes imprimir de manera simple.

Use debajo para imprimir matriz 2D

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

Use a continuación para imprimir matriz 1D

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

Preferiría generalmente foreach cuando no necesito hacer operaciones aritméticas con sus índices.

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

No hay nada malo con lo que tienes. Los bucles dobles nesteds deben ser fácilmente digeridos por cualquiera que lea su código.

Dicho esto, la siguiente formulación es más densa y más idiomática java. Sugiero hurgar en algunas de las clases de utilidad estática como matrices y colecciones más temprano que tarde. Toneladas de repetición pueden ser afeitadas por su uso eficiente.

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

Manera simple y limpia de imprimir una matriz 2D.

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

Eso es lo mejor, supongo.

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

@ La respuesta de Ashika funciona fantásticamente si quiere que (0,0) se represente en la esquina superior izquierda, según la convención de CS normal. Sin embargo, si prefiere usar la convención matemática normal y poner (0,0) en la esquina inferior izquierda, puede usar esto:

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

Esto utilizó LIFO (último en entrar, primero en salir) para invertir el orden en el momento de la impresión.

 |1 2 3| |4 5 6| 

Usa el siguiente código para imprimir los valores.

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

La salida se verá así (toda la matriz en una línea):

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

Prueba esto,

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