Как разрешить java.lang.NumberFormatException: для строки ввода: "N/A"?
В моей отладке я получаю исключение:
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)`
Как разрешить ошибку?
Ответы
Ответ 1
"N/A"
не является целым числом. Он должен бросить NumberFormatException
, если вы попытаетесь разобрать его на целое число.
Проверьте перед разбором. или правильно отрегулируйте Exception
.
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!
...
}
Ответ 2
Очевидно, вы не можете разобрать N/A
до int
. вы можете сделать что-то вроде следующего, чтобы справиться с этим NumberFormatException
.
String str="N/A";
try {
int val=Integer.parseInt(str);
}catch (NumberFormatException e){
System.out.println("not a number");
}
Ответ 3
Создайте обработчик исключений, например,
private int ConvertIntoNumeric(String xVal)
{
try
{
return Integer.parseInt(xVal);
}
catch(Exception ex)
{
return 0;
}
}
.
.
.
.
int xTest = ConvertIntoNumeric("N/A"); //Will return 0
Ответ 4
Integer.parseInt(str) throws NumberFormatException
, если строка не содержит целочисленное целое число. Вы можете использовать то же, что и ниже.
int a;
String str = "N/A";
try {
a = Integer.parseInt(str);
} catch (NumberFormatException nfe) {
// Handle the condition when str is not a number.
}
Ответ 5
"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;
}