45 votes

Conversion d'un tableau de chaînes en un tableau int en java

Je suis nouveau dans la programmation Java. Ma question est la suivante : j'ai un String mais quand j'essaie de le convertir en un int , je reçois toujours

 java.lang.NumberFormatException

Mon code est

 private void processLine(String[] strings) {
    Integer[] intarray=new Integer[strings.length];
    int i=0;
    for(String str:strings){
        intarray[i]=Integer.parseInt(str);//Exception in this line
        i++;
    }
}

Toute aide serait super merci !!!

23voto

Sean Patrick Floyd Points 109428

Pour vous débarrasser des espaces supplémentaires, vous pouvez modifier le code comme ceci :

 intarray[i]=Integer.parseInt(str.trim()); // No more Exception in this line

12voto

Bohemian Points 134107

Pour aider au débogage et améliorer votre code, procédez comme suit :

 private void processLine(String[] strings) {
    Integer[] intarray=new Integer[strings.length];
    int i=0;
    for(String str:strings){
        try {
            intarray[i]=Integer.parseInt(str);
            i++;
        } catch (NumberFormatException e) {
            throw new IllegalArgumentException("Not a number: " + str + " at index " + i, e);
        }
    }
}

De plus, à partir d'un point de netteté du code, vous pouvez réduire les lignes en procédant comme suit :

 for (String str : strings)
    intarray[i++] = Integer.parseInt(str);

8voto

J. Doe Points 2857

Autre chemin court :

 int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();

2voto

flavio.donze Points 3919

Puisque vous essayez d'obtenir un Integer[] , vous pouvez utiliser :

 Integer[] intarray = Stream.of(strings).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);

Votre code:

 private void processLine(String[] strings) {
    Integer[] intarray = Stream.of(strings).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);
}

Notez que cela ne fonctionne que pour Java 8 et supérieur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X