Perché println (array) ha strani output? (“

Ho una matrice di stringhe con quattro elementi che ho definito. Come mai quando System.out.println(name of Array) , non emette gli elementi? Ma invece mi dà una strana uscita.

Ecco il mio codice …

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

Ecco l’output che ho ottenuto:

 [Ljava.lang.String;@3e25a5 

Il metodo toString() di un array restituisce una String descrive l’ id quadro dell’array piuttosto che il suo contenuto. Questo perché gli array non sovrascrivono Object.toString() , la cui documentazione spiega ciò che stai vedendo:

Il metodo toString per l’ Object class restituisce una stringa composta dal nome della class di cui l’object è un’istanza, il carattere at-sign `@ ‘e la rappresentazione esadecimale senza firma del codice hash dell’object. In altre parole, questo metodo restituisce una stringa uguale al valore di:

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

Per ottenere una rappresentazione String dei contenuti di una matrice, è ansible utilizzare Arrays.toString(Object[]) .

La String restituita da questo metodo consiste nella rappresentazione di toString() di ogni elemento, nell’ordine in cui appaiono nell’array e racchiusi tra parentesi quadre ( "[]" ). Gli elementi adiacenti sono separati da una virgola e spazio ( ", " ).

Ad esempio, chiamando questo metodo sull’array si otterrà la seguente String :

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

Notare che le doppie virgole e la spaziatura dispari si ottengono perché l’elemento String dell’array ha già la punteggiatura e lo spazio bianco al loro interno. Rimuovendo quelli:

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

Il metodo restituirebbe quindi questa String :

 "[Einstein, Newton, Copernicus, Kepler]" 

È importante notare che l’utilizzo di questo metodo non ti dà alcun controllo sulla formattazione della String risultante. È utile per controllare rapidamente il contenuto di un array, ma è limitato oltre questo scopo. Per esempio, cosa succede se non vuoi quelle parentesi quadre che racchiudono o vuoi elencare ogni elemento riga per riga?

A questo punto dovresti iniziare a vedere il valore dell’implementazione del tuo metodo per generare i contenuti dell’array in un modo specifico per il tuo compito. Come altri hanno suggerito, esercitatelo usando un ciclo for e creando la nuova String risultante che volete esportare.

Puoi trovare ulteriori informazioni su loop per questo articolo di tutorial Java . In generale, le esercitazioni Java sono un’ottima lettura per un principiante e dovrebbero accompagnare bene il tuo corso.

Usa la class Array per espandere l’array per te:

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

ti darò

[Einstein ,, Newton ,, Copernico ,, Keplero.]

Le doppie virgole sono perché li hai inclusi nel tuo array; rimuovili e otterrai una bella lista separata da virgole.

Quindi nel tuo ciclo for sarà come:

 for(i=0;i 

Quindi spiegherò cosa fa. Un ciclo for è strutturato in questo modo:

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

Quindi inizi con i = 0 e ciò riempie la condizione: i è inferiore a genius.length (genius.length fornisce la lunghezza dell'array che in questo caso sarebbe 4). Quindi passerebbe attraverso il ciclo e stamperà il genio [i] (che sarebbe geniale [0]) perché i = 0. Quindi aggiungerebbe uno a i (i ++).

Andrebbe di nuovo in loop perché i = 1 riempie la condizione i è meno di genius.length ..... e così via ...

Andrebbe a i = 4 e si fermerebbe. Potresti pensare, per quanto riguarda il genio [4] ?? Bene, i dati dell'array sono denominati in questo modo 1st = arrayname [0], 2nd = arrayname [1] ..... Quindi il quarto sarà geniale [3]. Quindi quando i = 4 si ferma e tutti vengono stampati.

Puoi cambiare il formato di come sono stampati sostituendo con system.out.print (genius [i] + ","); Questo metterà una virgola e uno spazio dopo ognuno di essi.

Spero che ti aiuti, buona fortuna.

Usa enhanced per loop per iterare, come questo

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

Hai bisogno di un ciclo:

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

Ogni object ha un metodo toString() che è ciò che stai vedendo, il toString dell’array di stringhe.

È necessario eseguire iterazioni sull’array (ad esempio con un ciclo for) e stampare ciascun valore separatamente.

Se provate a stampare un array, stamperà le informazioni sull’object che non troverete davvero interessanti.