¿Cuál es la forma más sencilla de imprimir una matriz Java?
En Java, las matrices no se anulan toString()
, por lo que si intenta imprimir una directamente, obtendrá className
+ '@' + el hexadecimal de hashCode
la matriz, como se define en Object.toString()
:
int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray); // Prints something like '[I@3343c8b3'
Pero normalmente, en realidad querríamos algo más parecido a [1, 2, 3, 4, 5]
. ¿Cuál es la forma más sencilla de hacerlo? A continuación se muestran algunos ejemplos de entradas y salidas:
// 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]
Desde Java 5 puedes usar Arrays.toString(arr)
o Arrays.deepToString(arr)
para matrices dentro de matrices. Tenga en cuenta que la Object[]
versión llama .toString()
a cada objeto de la matriz. La salida incluso está decorada exactamente de la manera que usted lo solicita.
Ejemplos:
Matriz sencilla:
String[] array = new String[] {"John", "Mary", "Bob"}; System.out.println(Arrays.toString(array));
Producción:
[John, Mary, Bob]
Matriz anidada:
String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}}; // Gives undesired output: System.out.println(Arrays.toString(deepArray)); // Gives the desired output: System.out.println(Arrays.deepToString(deepArray));
Producción:
[[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922] [[John, Mary], [Alice, Bob]]
double
Formación:double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 }; System.out.println(Arrays.toString(doubleArray));
Producción:
[7.0, 9.0, 5.0, 1.0, 3.0 ]
int
Formación:int[] intArray = { 7, 9, 5, 1, 3 }; System.out.println(Arrays.toString(intArray));
Producción:
[7, 9, 5, 1, 3 ]
Siempre consulte primero las bibliotecas estándar.
import java.util.Arrays;
Entonces intenta:
System.out.println(Arrays.toString(array));
o si su matriz contiene otras matrices como elementos:
System.out.println(Arrays.deepToString(array));