Java : convertir des chaînes de caractères en entiers

En Java, il existe heureusement déjà des méthodes pour convertir une chaîne de caractères en un entier. Nous vous montrons dans notre guide comment utiliser cette fonction et quels problèmes peuvent survenir.

  • Convertir une chaîne de caractères en entier
  • Conversion à partir d'une autre base
  • Exception possible

Convertir une chaîne de caractères en entier

Java vous propose une interface pour convertir des types de données de type chaîne en un entier. La fonction statique parseInt fait partie de la classe Integer. La méthode s'utilise comme suit :

String numberString = "42";
int numberInt = Integer.parseInt(numberString);

La variable int contient maintenant la valeur 42. De même, vous pouvez utiliser la méthode statique valueOf si vous souhaitez créer un objet Integer au lieu d'une variable int.

Integer numberInteger = Integer.valueOf(numberString);

Cette méthode produit le même effet, mais renvoie un objet Integer.

Conversion à partir d'une autre base

Il peut arriver que vous souhaitiez convertir une chaîne de caractères provenant d'un autre système de numération que le système décimal. Les nombres binaires ou hexadécimaux en sont un exemple. Heureusement, cela est possible en modifiant légèrement le code. Les fonctions parseInt et valueOf offrent la possibilité de passer un deuxième paramètre dans l'appel de fonction, qui détermine la base du nombre dans la chaîne.

String numberString = "101" ; // 5 dans le système binaire
int numberInt = Integer.parseInt(numberString, 2) ; //nous indiquons 2 comme base

La variable numberInt contient maintenant la valeur 5, car il a été indiqué dans l'appel de fonction que le nombre dans numberString est un nombre binaire.

De manière analogue, nous pouvons aussi créer des objets entiers à partir d'une chaîne de caractères.

String numberString = "A2D8" ; // 41688 dans le système hexadécimal
Integer numberInteger = Integer.valueOf(numberString, 16) ; //nous indiquons 16 comme base

L'objet Integer numberInteger reçoit maintenant la valeur 41688, car la numberString est un nombre hexadécimal, ce que nous avons défini par le 16 dans l'appel de fonction.

Exception possible

Les méthodes parseInt et valueOf peuvent toutes deux lancer une NumberFormatException , si les arguments ne permettent pas la conversion. Considérez l'exemple de code suivant :

String numberString = "abc123";
// Lève une exception
int numberInt = Integer.parseInt(numberString);

Vous constaterez ici que la tentative de convertir "abc123" en un nombre décimal échouera évidemment. Dans ce cas, une NumberFormatException est émise. Si l'on tente de convertir la même chaîne de caractères dans le système hexadécimal:

String numberString = "abc123";
// Ne soulève pas d'exception car abc123 hexadécimal correspond à 1194684 décimal
int numberInt = Integer.parseInt(numberString, 16);

Il est donc judicieux de s'assurer au préalable qu'une conversion peut avoir lieu. En complément, vous devriez bien sûr aussi utiliser la gestion des exceptions si vous ne pouvez pas vous assurer que les chaînes sont dans le bon format.