Java >> Tutoriel Java >  >> Tag >> java.lang

java.lang.String ne peut pas être converti en Int

java.lang.String ne peut pas être converti en Int | Parfois, lors de la conversion des valeurs, nous pouvons obtenir "les types incompatibles java.lang.string ne peuvent pas être convertis en int". La chaîne est une collection d'une séquence de caractères constituée d'un littéral de chaîne entre guillemets doubles. L'entier est le type de données qui contient le nombre. Les objets de la classe java.lang.String sont immuables et représentent généralement les chaînes de caractères.

Comme nous le savons, dans certains scénarios, nous convertissons string en int, dans ce cas, nous pouvons obtenir des erreurs, nous montrons donc ici les erreurs qui peuvent survenir lors de la conversion de string en int.

public class Main {
   public static void main(String[] args) {
      String num = "2025";
      System.out.println("Num: " + num);
      int value = num;
      System.out.println("Value: " + value);
   }
}

Lors de la compilation, nous obtenons l'erreur suivante :-

Main.java:5 : erreur :types incompatibles :la chaîne ne peut pas être convertie en int
int valeur =num ;
^
1 erreur

Comme int est un type de données primitif et que string est un type de données référencé, les deux sont incompatibles ; par conséquent, nous ne pouvons pas affecter une chaîne à un int ou un int à une chaîne.

Solution pour l'erreur "La chaîne ne peut pas être convertie en int"

Pour résoudre ce problème, nous devons utiliser certaines méthodes prédéfinies qui sont données pour convertir une chaîne en une valeur int. Ces méthodes sont Integer.parseInt() et Integer.valueOf(). Voir plus :- Convertir une chaîne en int en Java

import java.util.Scanner;

public class Main {
   public static void main(String args[]) {
      Scanner scan = new Scanner(System.in);
      System.out.print("Enter string: ");
      String string = scan.next();

      try {
         int num = Integer.parseInt(string);
         System.out.println("Number: " + num);
      } catch (NumberFormatException nfe) {
         System.out.println(nfe.toString());
      }

      scan.close();
   }
}

Sortie :-

Saisissez la chaîne :12345
Numéro :12345

Saisissez la chaîne :8485.652
java.lang.NumberFormatException :pour la chaîne d'entrée :"8485.652"

Saisissez la chaîne :KnowProgram
java.lang.NumberFormatException :pour la chaîne d'entrée :"KnowProgram"

La chaîne "12345" est une chaîne analysable valide pour le type int, elle est donc convertie en une valeur int. Mais "8485.652" sera de type double après l'analyse, et nous ne pouvons pas attribuer double à int. Pour analyser "8485.652", nous devons utiliser la méthode Double.parseDouble(). Dans le 3ème cas de test "KnowProgram" n'est pas une chaîne de parabole donc nous ne pouvons pas les convertir en int et la méthode Integer.parseInt() lance NumberFormatException.

De manière très similaire, nous pouvons également utiliser la méthode Integer.valueOf(). Cette méthode appelle en interne la méthode Integer.parseInt() et lève également NumberFormatException en raison de la propagation des exceptions chaque fois qu'une chaîne n'est pas analysable en int.

import java.util.Scanner;

public class Main {
   public static void main(String args[]) {
      Scanner scan = new Scanner(System.in);
      System.out.print("Enter string: ");
      String string = scan.next();
      
      try {
         int num = Integer.valueOf(string);
         System.out.println("Number: " + num);
      } catch (NumberFormatException nfe) {
         nfe.printStackTrace();
      }
      scan.close();
   }
}

Sortie :-

Entrez la chaîne :20
Nombre :20

Entrez la chaîne :KnowProgram2025
java.lang.NumberFormatException :pour la chaîne d'entrée :"KnowProgram2025"
sur java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
sur java .base/java.lang.Integer.parseInt(Integer.java:660)
à java.base/java.lang.Integer.valueOf(Integer.java:991)
à Main.main(Main .java:10)

Dans le premier exemple, nous avons utilisé la méthode toString() et dans l'exemple précédent, nous avons utilisé la méthode printStackTrace() pour afficher le message d'exception. Il existe plusieurs manières d'afficher le message d'exception. Voir plus :- Différentes façons d'obtenir le message d'exception


Balise Java