En Java, les tableaux ne surchargent pas toString()
, donc si vous essayez d'en imprimer un directement, vous obtenez le className
+ '@' ; + l'hexagone du [hashCode
][1] du tableau, comme défini par Object.toString()
:
int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray); // prints something like '[I@3343c8b3'
Mais en général, nous voulons plutôt quelque chose comme [1, 2, 3, 4, 5]
. Quelle est la façon la plus simple de le faire ? Voici quelques exemples d'entrées et de sorties :
// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]
// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
Depuis Java 5, vous pouvez utiliser [Arrays.toString(arr)
][1] ou [Arrays.deepToString(arr)
][2] pour les tableaux dans les tableaux. Notez que la version Object[]
appelle .toString()
sur chaque objet du tableau. La sortie est même décorée de la manière exacte que vous demandez.
Exemples :
String[] array = new String[] {"John", "Mary", "Bob"} ;
System.out.println(Arrays.toString(array)) ;
Sortie :
[John, Mary, Bob]
String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}} ;
System.out.println(Arrays.toString(deepArray)) ;
//sortie : [Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]
System.out.println(Arrays.deepToString(deepArray)) ;
Sortie :
[[John, Mary], [Alice, Bob]]
double
Tableau : double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 } ;
System.out.println(Arrays.toString(doubleArray)) ;
Sortie :
[7.0, 9.0, 5.0, 1.0, 3.0 ]
int
Tableau : int[] intArray = { 7, 9, 5, 1, 3 } ;
System.out.println(Arrays.toString(intArray)) ;
Sortie :
[7, 9, 5, 1, 3 ]
[1] : https://docs.oracle.com/javase/9/docs/api/java/util/Arrays.html#toString-int:A- [2] : https://docs.oracle.com/javase/9/docs/api/java/util/Arrays.html#deepToString-java.lang.Object:A-
Vérifiez toujours les bibliothèques standard en premier. Essayez :
System.out.println(Arrays.toString(array));
ou si votre tableau contient d'autres tableaux comme éléments :
System.out.println(Arrays.deepToString(array));