web-dev-qa-db-fra.com

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

En exécutant mon code, je reçois 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?

63
codemaniac143

"N/A" n'est pas un entier. Il doit renvoyer NumberFormatException si vous essayez de l'analyser en entier.

Vérifiez avant d'analyser. ou bien gérer Exception correctement.

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

ou - correspondance de modèle entier -

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

Évidemment, vous ne pouvez pas analyser N/A à la valeur int. vous pouvez faire quelque chose comme suivre pour gérer cette NumberFormatException.

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

Faire un gestionnaire d'exception comme ça,

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

.
.
.
.

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

Integer.parseInt (str) lève NumberFormatException si la chaîne ne contient pas un entier analysable. Vous pouvez avoir le même comportement 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.
}
4
Jayamohan

"N/A" est une chaîne et ne peut pas être converti en nombre. Attrapez l'exception et gérez-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;
    }
2
rocketboy