98 votes

Comment puis-je empêcher java.lang.NumberFormatException : Pour la chaîne d'entrée : "N/A" ?

En exécutant mon code, j'obtiens un NumberFormatException :

java.lang.NumberFormatException: For input string: "N/A"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.valueOf(Unknown Source)
    at java.util.TreeMap.compare(Unknown Source)
    at java.util.TreeMap.put(Unknown Source)
    at java.util.TreeSet.add(Unknown Source)`

Comment puis-je empêcher cette exception de se produire ?

116voto

Subhrajyoti Majumder Points 20001

"N/A" n'est pas un nombre entier. Il doit lancer NumberFormatException si vous essayez de le convertir en un nombre entier.

Vérification avant l'analyse ou la manipulation Exception correctement.

  1. Traitement des exceptions

    try{
        int i = Integer.parseInt(input);
    } catch(NumberFormatException ex){ // handle your exception
        ...
    }

ou - Filtrage des nombres entiers -

String input=...;
String pattern ="-?\\d+";
if(input.matches("-?\\d+")){ // any positive or negetive integer or not!
 ...
}

10voto

Jayamohan Points 5901

Integer.parseInt(str) jette NumberFormatException si la chaîne ne contient pas d'entier analysable. Vous pouvez faire la même chose que ci-dessous.

int a;
String str = "N/A";

try {   
   a = Integer.parseInt(str);
} catch (NumberFormatException nfe) {
  // Handle the condition when str is not a number.
}

9voto

Créez un gestionnaire d'exception comme ceci,

private int ConvertIntoNumeric(String xVal)
{
 try
  { 
     return Integer.parseInt(xVal);
  }
 catch(Exception ex) 
  {
     return 0; 
  }
}

.
.
.
.

int xTest = ConvertIntoNumeric("N/A");  //Will return 0

7voto

Il est évident que vous ne pouvez pas analyser N/A a int Vous pouvez faire quelque chose comme ce qui suit pour gérer cela NumberFormatException .

   String str="N/A";
   try {
        int val=Integer.parseInt(str);
   }catch (NumberFormatException e){
       System.out.println("not a number"); 
   }

5voto

rocketboy Points 5100

"N/A" est une chaîne de caractères et ne peut être converti en un nombre. Attrapez l'exception et traitez-la. Par exemple :

    String text = "N/A";
    int intVal = 0;
    try {
        intVal = Integer.parseInt(text);
    } catch (NumberFormatException e) {
        //Log it if needed
        intVal = //default fallback value;
    }

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