【发布时间】:2013-05-30 06:29:16
【问题描述】:
我有一个小方法可以将字符串转换为整数。由于字符串是方法的参数,我想确保该字符串是可转换的。所以我只是想知道什么是最安全和/或最快的方法。
版本 A:保持原样并承担风险(我试图避免)
public static int stringToInt(String param) {
return Integer.valueOf(param);
}
(在速度方面,B、C版会有什么不同?)
版本 B:捕获异常
public static int stringToInt(String param) {
try {
return Integer.valueOf(param);
} catch(NumberFormatException e) {
return -1;
}
}
版本C:检查字符串的每个字母,看看它是否是数字数字
public static int stringToInt(String param) {
for(char c : param.toCharArray()) {
if(!Character.isDigit(c))
return -1;
}
return Integer.valueOf(param);
}
请注意,参数必须是正数,-1 应该是我的小程序中的“错误值”,换句话说,所有三个版本的方法都可以在我的程序中完美运行。
我非常愿意接受您可以给我的任何其他建议,因此,如果您认为自己的版本更好,请随时创建您自己的版本。
非常感谢您提前支持。
【问题讨论】:
-
如果错误不是正确的行为,并且如果您不想在更改的更高位置捕获
NumberFormatException,则第一个版本只有“风险”。抛出异常可能是对错误输入的完美反应。 -
在我看来,第一个是最快的,但是如果你输入一个非数字值它会抛出异常。第二个对我来说是最好的,因为它有一个 catch 来防止异常停止你的程序。最后一个,它只是第二个的长版本。
-
版本 C 在负整数上失败
-
@bengoesboom 我提到输入必须是正数
-
C 正在检查 A 和 B 是否已经在内部进行。 B 是安全和速度之间的一个很好的折衷方案。
标签: java type-conversion