¿Por qué println (array) tiene salida extraña? (“

Tengo una matriz de cadenas con cuatro elementos que definí. ¿Cómo es que cuando System.out.println(name of Array) , no muestra los elementos? Pero en cambio me da una salida extraña.

Aquí está mi código …

 public class GeniusTrial { public static void main(String[]args) { String [] genius = {"Einstein, ", "Newton, ", "Copernicus, ", "Kepler."}; System.out.print(genius); } } 

Aquí está el resultado que obtuve:

 [Ljava.lang.String;@3e25a5 

El método toString() de una matriz devuelve una String describe la identidad de la matriz en lugar de su contenido. Esto se debe a que las matrices no anulan Object.toString() , cuya documentación explica lo que está viendo:

El método toString para el Object clase devuelve una cadena que consiste en el nombre de la clase de la cual el objeto es una instancia, el carácter al firmar `@ ‘y la representación hexadecimal sin signo del código hash del objeto. En otras palabras, este método devuelve una cadena igual al valor de:

 getClass().getName() + '@' + Integer.toHexString(hashCode()) 

Para obtener una representación en String del contenido de una matriz, puede usar Arrays.toString(Object[]) .

La String devuelta por este método consiste en la representación toString() de cada elemento, en el orden en que aparecen en la matriz y entre corchetes ( "[]" ). Los elementos adyacentes están separados por una coma y un espacio ( ", " ).

Por ejemplo, llamar a este método en su matriz daría como resultado la siguiente String :

 "[Einstein, , Newton, , Copernicus, , Kepler.]" 

Tenga en cuenta que las comas dobles y el espaciado impar se deben a que las String elemento de su matriz ya tienen puntuación y espacio en blanco. Eliminándolos:

 String [] genius = {"Einstein", "Newton", "Copernicus", "Kepler"}; 

El método devolvería esta String :

 "[Einstein, Newton, Copernicus, Kepler]" 

Es importante observar que el uso de este método no le da ningún control sobre el formato del String resultante. Es bueno para verificar rápidamente el contenido de una matriz, pero está limitado más allá de ese propósito. Por ejemplo, ¿qué sucede si no desea incluir los corchetes o si desea enumerar cada elemento línea por línea?

En este punto, debería comenzar a ver el valor de implementar su propio método para generar los contenidos de su matriz de una manera específica para su tarea. Como otros han sugerido, practique esto usando un bucle for y construyendo el nuevo String resultante que desea generar.

Puede encontrar más información sobre bucles for en este artículo de Tutoriales de Java . En general, los Tutoriales de Java son una excelente lectura para un principiante y deben acompañar bien tu curso.

Use la clase Arrays para expandir la matriz por usted:

 System.out.println(Arrays.toString(genius)); 

Te regalaré

[Einstein, Newton, Copérnico, Kepler]

Las comas dobles se deben a que las incluiste en tu matriz; elimínalos y obtendrás una buena lista separada por comas.

Entonces en tu ciclo for va a ser como:

 for(i=0;i 

Entonces explicaré lo que hace esto. Un ciclo for está estructurado así:

 for(original value; condition for the variable to go through the for loop; what to do to variable at end of for loop) 

Entonces comienzas con i = 0 y eso llena la condición: i es menor que genius.length (genius.length da la longitud de la matriz que sería 4 en este caso). Entonces pasaría por el bucle e imprimiría el genio [i] (que sería el genio [0]) porque i = 0. Entonces agregaría uno a i (i ++).

Pasaría nuevamente por el ciclo porque i = 1 llena la condición i es menor que genius.length ..... y así sucesivamente ...

Iría a i = 4 y se detendría. Usted puede pensar, ¿qué hay de genio [4]? Bueno, los datos de la matriz se nombran así: 1st = arrayname [0], 2nd = arrayname [1] ..... Así que el cuarto será genius [3]. Entonces cuando i = 4 se detiene y todos se imprimen.

Puede cambiar el formato de cómo se imprimió reemplazando con system.out.print (genius [i] + ","); Esto pondrá una coma y espacio después de cada uno.

Espero que ayude, buena suerte.

Use Enhanced for loop to iterate, como este

 for(String str:genius){ System.out.println(str) } 

Necesitas un bucle:

 for(String gen : genius) { System.out.print(gen); } 

Cada objeto tiene un método toString() que es lo que está viendo, el conjunto de cadenas stringString.

Necesita iterar sobre su matriz (con un bucle for, por ejemplo) e imprimir cada valor por separado.

Si intenta imprimir una matriz, imprimirá información sobre el objeto que no encontrará realmente interesante.