Как я могу предотвратить java.ленг.NumberFormatException: для входной строки: "N / A"? [закрытый]


во время выполнения моего кода я получаю 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)`

Как я могу предотвратить это исключение?

5 51

5 ответов:

"N/A" не является целым числом. Он должен бросить NumberFormatException Если вы попытаетесь разобрать его на целое число.

проверьте перед разбором. или обрабатывать Exception правильно.

  1. Обработка Исключений*
try{
   int i = Integer.parseInt(input);
}catch(NumberFormatException ex){ // handle your exception
   ...
}

или целое число шаблону -

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

очевидно, что вы не можете разобрать N/A to int значение. вы можете сделать что-то вроде следующего, чтобы справиться с этим NumberFormatException .

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

сделать обработчик исключений, как это,

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

.
.
.
.

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

целое число.parseInt (str) закидываем NumberFormatException если строка не содержит разбираемое целое число. Вы можете иметь то же самое, что и ниже.

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

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

"N / A" является строкой и не может быть преобразован в число. Поймать исключение и обработать его. Например:

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