web-dev-qa-db-fra.com

Java - Le meilleur moyen 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 si c'était une bonne pratique ou non. Corrigez-moi également toute autre erreur que j'ai commise 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();
}
42
Chip Goon Lewin

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));
109
Prabhakaran

Je préférerais généralement foreach lorsque je n'ai pas besoin d'effectuer d'opérations arithmétiques avec leurs indices.

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

Un moyen simple et propre d’imprimer un tableau 2D. 

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

Il n'y a rien de mal avec ce que vous avez. Les boucles à double imbriqué doivent être facilement digérées par toute personne lisant votre code. 

Ceci dit, la formulation suivante est une Java plus dense et plus idiomatique. Je suggérerais de fouiller dans certaines classes d'utilitaires statiques telles que Arrays et Collections plus tôt que plus tard. Des tonnes de fer à repasser peuvent être rasées grâce à leur utilisation efficace.

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

C'est le meilleur je suppose: 

   for (int[] row : matrix){
    System.out.println(Arrays.toString(row));
   }
3
Plcode
|1 2 3|
|4 5 6| 

Utilisez le code ci-dessous pour imprimer les valeurs.

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

La sortie ressemblera à ceci (toute la matrice en une ligne):

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

La réponse de @ Ashika fonctionne à merveille si vous souhaitez que (0,0) soit représenté dans le coin supérieur gauche, conformément à 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());

Ceci utilisait LIFO (dernier entré, premier sorti) pour inverser l'ordre au moment de l'impression.

1
Max von Hippel

Deux lignes avec nouvelle ligne:

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

Une doublure sans nouvelle ligne:

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

Essaye ça,

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