web-dev-qa-db-fra.com

Comment convertir un tableau int en String avec la méthode toString dans Java

J'utilise en essayant d'utiliser la méthode toString(int[]), mais je pense que je le fais mal:

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

Mon code:

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

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

La sortie est:

[I@23fc4bec

J'ai aussi essayé d'imprimer comme ça, mais:

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[])

J'ai sorti ce code d'un code plus gros et plus complexe, mais je peux l'ajouter si nécessaire. Mais cela devrait donner des informations générales.

Je recherche une sortie, comme dans la documentation d'Oracle:

La représentation sous forme de chaîne consiste en une liste d'éléments du tableau, entre crochets ("[]"). Les éléments adjacents sont séparés par les caractères "," (une virgule suivie d'un espace).

133
Jaanus

Ce que vous voulez, c'est la méthode Arrays.toString(int[]):

import Java.util.Arrays;

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

..      

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

Il existe une méthode d'assistance statique Arrays.toString pour chaque type de primitive différente Java; celui pour int[] dit ceci :

public static String toString(int[] a)

Retourne une représentation sous forme de chaîne du contenu du tableau spécifié. La représentation sous forme de chaîne consiste en une liste d'éléments du tableau, entre crochets ("[]"). Les éléments adjacents sont séparés par les caractères ", " (une virgule suivie d'un espace). Les éléments sont convertis en chaînes comme par String.valueOf(int). Renvoie "null" si a est nul.

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

devrait être:

System.out.println(Arrays.toString(array));
36
Eng.Fouad

Très d'accord avec @Patrik M, mais le problème avec Arrays.toString est qu'il inclut "[" et "]" et "," = dans la sortie. Donc, je vais simplement utiliser une regex pour les enlever de la sortie comme ça

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

et maintenant vous avez une chaîne qui peut être analysée de nouveau en Java.lang.Number, par exemple,

long veryLongNumber = Long.parseLong(intStr);

Ou vous pouvez utiliser les flux Java 8, si vous détestez regex,

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

Vous pouvez utiliser Java.util.Arrays :

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

Sortie:

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

La méthode toString sur un tableau imprime uniquement l'adresse de mémoire que vous obtenez. Vous devez boucler le tableau et imprimer chaque élément seul

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

Cette fonction retourne un tableau d'int dans la forme de chaîne comme "6097321041141011026"

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

En utilisant l'utilitaire que je décris ici , vous pouvez mieux contrôler la représentation des chaînes que vous obtenez pour votre tableau.

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

Voici un exemple de passage d'une liste de chaînes à une seule chaîne, puis à une liste de chaînes.

Compilation:

$ javac test.Java
$ Java test

Fonctionnement:

 Liste initiale: 
 
 "Abc" 
 "Def" 
 "Ghi" 
 "Jkl" 
 "mno" 
 
 En chaîne simple: 
 
 "[abc, def, ghi, jkl, mno]" 
 
 Liste reconstituée: 
 
 "Abc" 
 "Def" 
 "Ghi" 
 "Jkl" 
 "Mno" 

Code source:

import Java.util.*;
public class test {

    public static void main(String[] args) {
        List<String> 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<String> 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<String>)operand)
                System.out.println("    \"" + string + "\"");
        }
        System.out.println("\n");
    }
}
0
clearlight