可能重复:
Java:封装Integer.parseInt()的好方法
如何将字符串转换为float并避免在java中使用try/catch?
C#有Int.TryParse:Int32.TryParse方法(String,Int32%)
这种方法的优点在于它不会为坏数据抛出异常.
在java中,Integer.parseInt("abc")
将抛出异常,并且在可能发生这种情况的情况下,很多性能将受到影响.
对于那些性能问题的情况,有没有办法解决这个问题?
我能想到的另一种方法是针对正则表达式运行输入,但我必须测试以查看更快的内容.
Woo*_*Moo 58
不,你必须这样做:
boolean tryParseInt(String value) {
try {
Integer.parseInt(value);
return true;
} catch (NumberFormatException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
......你可以像这样使用它:
if (tryParseInt(input)) {
Integer.parseInt(input); // We now know that it's safe to parse
}
Run Code Online (Sandbox Code Playgroud)
编辑- 刚刚看到您关于与潜在错误的输入数据相关的性能问题的评论。我不知道 parseInt 上的 try/catch 与正则表达式相比如何。我猜测,基于很少的硬知识,与 Java 中的 try/catch 相比,正则表达式的性能并不高。
无论如何,我只想这样做:
public Integer tryParse(Object obj) {
Integer retVal;
try {
retVal = Integer.parseInt((String) obj);
} catch (NumberFormatException nfe) {
retVal = 0; // or null if that is your preference
}
return retVal;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
121365 次 |
最近记录: |