【发布时间】:2014-09-29 11:15:29
【问题描述】:
我要检查的是 String 我传递给 Integer.valueOf(String s) 的有效字符串以进行解析。如果一个不可解析,我需要返回 0。
我是这样做的:
try{
Integer.valueOf(String s)
} catch(NumberFormatException e) {
return 0;
}
这样做是不是不好?
【问题讨论】:
-
没有。这还不错(因为您正在处理异常)。虽然你也可以
string.matches("\\d+")看看它是否只包含数字。 -
我不认为它坏,但有更好的方法来做到这一点。一个简单的
while检查每个字符是否都是数字(注意第一个也可以是+或-),或者正则表达式匹配会更好。如果字符串不可解析,这将避免生成堆栈跟踪 -
我认为您的代码已经做到了最好。另请注意,HotSpot 对当场捕获且未在 catch 块中取消引用的异常进行了特定优化。它将完全编译为您想要的代码(不生成堆栈跟踪等)。
-
@MansoorSiddiqui 不需要处理整数的小数。
-
我的意思是最后带有“.0”的整数。 Integer.parseInt(String) 将解析那些就好了。