Hoe kan ik java.lang.NumberFormatException voorkomen: Voor invoerreeks: “N/A”?

Tijdens het uitvoeren van mijn code krijg ik een 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)`

Hoe kan ik voorkomen dat deze uitzondering optreedt?


Antwoord 1, autoriteit 100%

"N/A"is geen geheel getal. Het moet NumberFormatExceptiongooien als je het probeert te ontleden naar een geheel getal.

Controleer voor het ontleden of behandel Exceptioncorrect.

  1. Afhandeling van uitzonderingen

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

of – Integer patroonovereenkomst

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

Antwoord 2, autoriteit 7%

Maak een uitzonderingshandler zoals deze,

private int ConvertIntoNumeric(String xVal)
{
 try
  { 
     return Integer.parseInt(xVal);
  }
 catch(Exception ex) 
  {
     return 0; 
  }
}
.
.
.
.
int xTest = ConvertIntoNumeric("N/A");  //Will return 0

Antwoord 3, autoriteit 6%

Integer.parseInt(str)genereert NumberFormatExceptionals de tekenreeks geen parseerbaar geheel getal bevat. Je kunt hetzelfde doen als hieronder.

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

Antwoord 4, autoriteit 5%

Het is duidelijk dat u N/Aniet kunt ontleden naar intwaarde. je kunt zoiets als het volgende doen om die NumberFormatExceptionaf te handelen.

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

Antwoord 5, autoriteit 2%

“N.v.t.” is een tekenreeks en kan niet worden geconverteerd naar een getal. Vang de uitzondering en behandel deze. Bijvoorbeeld:

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

Other episodes