Java-La meilleure façon d'imprimer un tableau 2D?


Je me demandais quelle était la meilleure façon d'imprimer un tableau 2D. C'est un code que j'ai et je me demandais juste si c'était une bonne pratique ou non. Corrigez-moi également toutes les autres erreurs que j'ai commises dans ce code si vous en trouvez. Merci!

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();
}
Author: Jim Garrison, 2013-10-29

8 answers

Vous pouvez imprimer de manière simple.

Utilisez ci-dessous pour imprimer un tableau 2D

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

Utilisez ci-dessous pour imprimer un tableau 1D

int[] array = new int[size];
System.out.println(Arrays.toString(array));
 96
Author: Prabhakaran, 2013-10-29 01:56:56

Je préférerais généralement foreach quand je n'ai pas besoin de faire des opérations arithmétiques avec leurs indices.

for (int[] x : array)
{
   for (int y : x)
   {
        System.out.print(y + " ");
   }
   System.out.println();
}
 13
Author: snr, 2017-01-08 13:25:34

Il n'y a rien de mal à ce que vous avez. Les boucles for double-imbriquées doivent être facilement digérées par quiconque lit votre code.

Cela dit, la formulation suivante est java plus dense et plus idiomatique. Je suggère de fouiller dans certaines des classes d'utilitaires statiques comme Arrayset Collections plus tôt que tard. Des tonnes de passe-partout peuvent être rasées par leur utilisation efficace.

for (int[] row : array)
{
    Arrays.fill(row, 0);
    System.out.println(Arrays.toString(row));
}
 7
Author: ashika, 2013-10-29 02:00:14

Moyen simple et propre d'imprimer un tableau 2D.

System.out.println(Arrays.deepToString(array).replace("], ", "]\n").replace("[[", "[").replace("]]", "]"));
 5
Author: matthewpliddy, 2017-09-02 20:46:01

C'est le meilleur je suppose:

   for (int[] row : matrix){
    System.out.println(Arrays.toString(row));
   }
 3
Author: Plcode, 2017-05-25 15:43:42

La réponse de@Ashika fonctionne de manière fantastique si vous voulez que (0,0) soit représenté dans le coin supérieur gauche, selon la convention CS normale. Si toutefois vous préférez utiliser la convention mathématique normale et mettre (0,0) dans le coin inférieur gauche, vous pouvez utiliser ceci:

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

Cela a utilisé LIFO (Last In First Out) pour inverser l'ordre au moment de l'impression.

 1
Author: Max von Hippel, 2016-03-03 18:06:00
|1 2 3|
|4 5 6| 

Utilisez le code ci-dessous pour imprimer les valeurs.

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

La sortie ressemblera à ceci (la matrice entière dans une ligne):

[[1,2,3],[4,5,6]]
 1
Author: Baseem, 2017-08-08 17:49:20

Essayez ceci,

for (char[] temp : box) {
    System.err.println(Arrays.toString(temp).replaceAll(",", " ").replaceAll("\\[|\\]", ""));
}
 0
Author: ran_0315, 2018-09-03 10:32:25