cod*_*143 65 java string int numberformatexception
在运行我的代码时,我得到了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)`
Run Code Online (Sandbox Code Playgroud)
如何防止发生此异常?
Sub*_*der 79
"N/A"
不是整数.NumberFormatException
如果您尝试将其解析为整数,则必须抛出.
解析前检查.或Exception
妥善处理.
Run Code Online (Sandbox Code Playgroud)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!
...
}
Run Code Online (Sandbox Code Playgroud)
“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;
}
Run Code Online (Sandbox Code Playgroud)
显然,你不能解析N/A
到int
的值.你可以做以下事情来处理它NumberFormatException
.
String str="N/A";
try {
int val=Integer.parseInt(str);
}catch (NumberFormatException e){
System.out.println("not a number");
}
Run Code Online (Sandbox Code Playgroud)
NumberFormatException
如果字符串不包含可解析的整数,则Integer.parseInt(str)抛出。你可以像下面一样处理。
int a;
String str = "N/A";
try {
a = Integer.parseInt(str);
} catch (NumberFormatException nfe) {
// Handle the condition when str is not a number.
}
Run Code Online (Sandbox Code Playgroud)
制作这样的异常处理程序,
private int ConvertIntoNumeric(String xVal)
{
try
{
return Integer.parseInt(xVal);
}
catch(Exception ex)
{
return 0;
}
}
.
.
.
.
int xTest = ConvertIntoNumeric("N/A"); //Will return 0
Run Code Online (Sandbox Code Playgroud)