如何防止 java.lang.NumberFormatException:对于输入字符串:“N/A”?
Posted
技术标签:
【中文标题】如何防止 java.lang.NumberFormatException:对于输入字符串:“N/A”?【英文标题】:How can I prevent java.lang.NumberFormatException: For input string: "N/A"? 【发布时间】:2013-09-13 17:57:57 【问题描述】:在运行我的代码时,我得到一个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)`
如何防止此异常发生?
【问题讨论】:
NumberFormatException 【参考方案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!
...
【讨论】:
是的,你是对的,我忘记将它分配给整数值现在我得到了错误,是的,它已成功解决,谢谢 +1 用于整数模式匹配。我不确定如何使用 try/catch 从标准输入循环读取一行。 @JasonHartley,请查看答案。我已经对其进行了编辑并解释了为什么您不喜欢在代码中使用整数模式匹配。 如何从这种类型的双引号字符串“151564”中获取整数【参考方案2】:制作这样的异常处理程序,
private int ConvertIntoNumeric(String xVal)
try
return Integer.parseInt(xVal);
catch(Exception ex)
return 0;
.
.
.
.
int xTest = ConvertIntoNumeric("N/A"); //Will return 0
【讨论】:
【参考方案3】:Integer.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.
【讨论】:
【参考方案4】:显然您无法将 N/A
解析为 int
值。您可以执行以下操作来处理 NumberFormatException
。
String str="N/A";
try
int val=Integer.parseInt(str);
catch (NumberFormatException e)
System.out.println("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;
【讨论】:
以上是关于如何防止 java.lang.NumberFormatException:对于输入字符串:“N/A”?的主要内容,如果未能解决你的问题,请参考以下文章