'How can I prevent java.lang.NumberFormatException: For input string: "N/A"?
While running my code I am getting 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)`
How can I prevent this exception from occurring?
Solution 1:[1]
"N/A" is not an integer. It must throw NumberFormatException if you try to parse it to an integer.
Check before parsing or handle Exception properly.
Exception Handling
try{ int i = Integer.parseInt(input); } catch(NumberFormatException ex){ // handle your exception ... }
or - Integer pattern matching -
String input=...;
String pattern ="-?\\d+";
if(input.matches("-?\\d+")){ // any positive or negetive integer or not!
...
}
Solution 2:[2]
Integer.parseInt(str) throws NumberFormatException if the string does not contain a parsable integer. You can hadle the same as below.
int a;
String str = "N/A";
try {
a = Integer.parseInt(str);
} catch (NumberFormatException nfe) {
// Handle the condition when str is not a number.
}
Solution 3:[3]
Make an exception handler like this,
private int ConvertIntoNumeric(String xVal)
{
try
{
return Integer.parseInt(xVal);
}
catch(Exception ex)
{
return 0;
}
}
.
.
.
.
int xTest = ConvertIntoNumeric("N/A"); //Will return 0
Solution 4:[4]
Obviously you can't parse N/A to int value. you can do something like following to handle that NumberFormatException .
String str="N/A";
try {
int val=Integer.parseInt(str);
}catch (NumberFormatException e){
System.out.println("not a number");
}
Solution 5:[5]
"N/A" is a string and cannot be converted to a number. Catch the exception and handle it. For example:
String text = "N/A";
int intVal = 0;
try {
intVal = Integer.parseInt(text);
} catch (NumberFormatException e) {
//Log it if needed
intVal = //default fallback value;
}
Solution 6:[6]
'N/A' cannot be parsed to int and we get the exception and there might a case where the provided string could be <-2147483648 or > 2147483648 (int max and min) and in such case too we get number format exception and in such case we can try as below.
String str= "8765432198";
Long num= Long.valueOf(str);
int min = Integer.MIN_VALUE;
int max = Integer.MAX_VALUE;
Integer n=0;
if (num > max) {
n = max;
}
if (num < min) {
n = min;
}
if (num <= max && num >= min)
n = Integer.valueOf(str);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Jitesh Prajapati |
| Solution 2 | Jayamohan |
| Solution 3 | Rajaprabhu Aravindasamy |
| Solution 4 | Ruchira Gayan Ranaweera |
| Solution 5 | rocketboy |
| Solution 6 | NKR |
