Come convertire un array int in String con il metodo toString in Java

Sto usando cercando di usare il metodo toString(int[]) , ma penso di sbagliarmi:

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#toString (int [])

Il mio codice:

 int[] array = new int[lnr.getLineNumber() + 1]; int i = 0; System.out.println(array.toString()); 

L’output è:

 [[email protected] 

Inoltre ho provato a stampare in questo modo, ma:

 System.out.println(new String().toString(array)); // **error on next line** The method toString() in the type String is not applicable for the arguments (int[]) 

Ho preso questo codice da un codice più grande e più complesso, ma posso aggiungerlo se necessario. Ma questo dovrebbe dare informazioni generali.

Sto cercando l’output, come nella documentazione di Oracle:

La rappresentazione della stringa consiste in un elenco di elementi della matrice, racchiusi tra parentesi quadre (“[]”). Gli elementi adiacenti sono separati dai caratteri “,” (una virgola seguita da uno spazio).

Quello che vuoi è il Arrays.toString(int[]) :

 import java.util.Arrays; int[] array = new int[lnr.getLineNumber() + 1]; int i = 0; .. System.out.println(Arrays.toString(array)); 

Esiste un metodo di supporto statico Arrays.toString per ogni tipo java primitivo diverso; quello per int[] dice questo :

 public static String toString(int[] a) 

Restituisce una rappresentazione in formato stringa del contenuto dell’array specificato. La rappresentazione della stringa consiste in un elenco di elementi della matrice, racchiusi tra parentesi quadre ( "[]" ). Gli elementi adiacenti sono separati dai caratteri ", " (una virgola seguita da uno spazio). Gli elementi vengono convertiti in stringhe come da String.valueOf(int) . Restituisce "null" se a è nullo.

 System.out.println(array.toString()); 

dovrebbe essere:

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

Puoi usare java.util.Arrays :

 String res = Arrays.toString(array); System.out.println(res); 

Produzione:

 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

Molto d’accordo con @Patrik M, ma la cosa con Arrays.toString è che include “[“ e “]” e “,” nell’output. Quindi userò semplicemente un’espressione regolare per rimuoverli dall’output in questo modo

 String strOfInts = Arrays.toString(intArray).replaceAll("\\[|\\]|,|\\s", ""); 

e ora hai una stringa che può essere analizzata in java.lang.Number , per esempio,

 long veryLongNumber = Long.parseLong(intStr); 

Oppure puoi usare java 8 streams, se odi regex,

 String strOfInts = Arrays .stream(intArray) .mapToObj(String::valueOf) .reduce((a, b) -> a.concat(",").concat(b)) .get(); 

Il metodo toString su un array stampa solo l’indirizzo di memoria che stai ricevendo. Devi fare un ciclo attraverso l’array e stampare ogni elemento da solo

 for(int i : array) { System.println(i); } 

Usando l’utility che descrivo qui , puoi avere un maggiore controllo sulla rappresentazione della stringa che ottieni per il tuo array.

 String[] s = { "hello", "world" }; RichIterable r = RichIterable.from(s); r.mkString(); // gives "hello, world" r.mkString(" | "); // gives "hello | world" r.mkString("< ", ", ", " >"); // gives "< hello, world >" 

Questa funzione restituisce una matrice di int nel formato stringa come “6097321041141011026”

 private String IntArrayToString(byte[] array) { String strRet=""; for(int i : array) { strRet+=Integer.toString(i); } return strRet; } 

Ecco un esempio di passaggio da un elenco di stringhe a una singola stringa e ritorno a un elenco di stringhe.

compilazione:

 $ javac test.java $ java test 

In esecuzione:

     Elenco iniziale:

         "Abc"
         "Def"
         "ghi"
         "Jkl"
         "MNO"

     Come singola stringa:

         "[abc, def, ghi, jkl, mno]"

     Lista ricostituita:

         "Abc"
         "Def"
         "ghi"
         "Jkl"
         "MNO"

Codice sorgente:

 import java.util.*; public class test { public static void main(String[] args) { List listOfStrings= new ArrayList<>(); listOfStrings.add("abc"); listOfStrings.add("def"); listOfStrings.add("ghi"); listOfStrings.add("jkl"); listOfStrings.add("mno"); show("\nInitial list:", listOfStrings); String singleString = listOfStrings.toString(); show("As single string:", singleString); List reconstitutedList = Arrays.asList( singleString.substring(0, singleString.length() - 1) .substring(1).split("[\\s,]+")); show("Reconstituted list:", reconstitutedList); } public static void show(String title, Object operand) { System.out.println(title + "\n"); if (operand instanceof String) { System.out.println(" \"" + operand + "\""); } else { for (String string : (List)operand) System.out.println(" \"" + string + "\""); } System.out.println("\n"); } }