Comment convertir un String en int en Java

La seule condition pour convertir une chaîne de caractères en un entier en java est que cette dernière doit contenir seulement des chiffres que l'on veut mettre dans une variable de type int à l'exception du premier caractère qui indique une valeur négative "-" ou positive "+". Par exemple, le résultat de "-123" est le nombre -123.
Beaucoup vont faire un cast, mais java ne l'autorise pas.

cannot Cast from string to int

L’exception Cannot cast from String to int signifie en français que le compilateur Java n'autorise pas le cast d'un String en int. C'est logique puisque les deux ne sont pas du même type.

La classe Integer

L'objet Integer contient un seul attribut de type int. Cette classe contient plusieurs méthode pour convertir un int en String et un String en int.

1) En instanciant un new Integer(String s)

Ce constructeur alloue un nouveau objet contenant un entier:

public class Cast {

public static void main(String[] args) {
String nbs = "12";
int nb;
nb = new Integer(nbs);
System.out.println(nb);
}
}
Sortie:

12

2) Avec la méthode Integer.valueOf(String s)

La méthode valueOf() retourne une nouvelle instance de java.lang.Integer qui contient la valeur représentée dans l'argument String.

public class Cast {

public static void main(String[] args) {
String nbs = "12";
int nb;
nb = new Integer(nbs);
System.out.println(nb);
}
}
Sortie:

12

3) Avec la méthode Integer.parseInt(String s)

La méthode parseInt() retourne une valeur de type entier, exactement comme si l'argument est passé dans la méthode valueOf(String s).

public class Cast {

public static void main(String[] args) {
String nbs = "12";
int nb;
nb = Integer.parseInt(nbs);
System.out.println(nb);
}
}
Sortie:

12

Exception NumberFormatException levée

NumberFormatException est appelée si l'argument passé n'a pas le format approprié. Les causes sont:
  • L’argument passé contient au moins un caractère non numérique.
  • Le nombre n'est pas décimal comme le float 12.4f.

Amélioration de notre procédure

Pour éviter l’arrêt du programme, on va retourner une valeur par défaut si le format n'est pas respecté.

public class Cast {

public static void main(String[] args) {
String nbs = "12.4s";
int nb;
System.out.println(stringToInt(nbs,0));
}

public static int stringToInt(String valeur, int _default) {
try {
return Integer.parseInt(valeur);
} catch (NumberFormatException e) {
return _default;
}
}
}
Sortie:

0
Dans le cas ou la variable nbs ne soit pas numérique, la fonction stringToInt() retourne 0 par défaut.

Références:
Oracle.com - La classe Integer
JRJC-Convert string to int