java有一个不会为坏数据抛出异常的int.tryparse吗?

Does java have a int.tryparse that doesn't throw an exception for bad data?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Java: Good way to encapsulate Integer.parseInt()
how to convert a string to float and avoid using try/catch in java?

C具有int.typarse:int32.typarse方法(string,int32%)

这个方法的好处在于它不会对坏数据抛出异常。

在爪哇,EDCOX1(0)将抛出一个异常,在这种情况下,很多性能会受到影响。

对于那些性能是一个问题的情况,是否有办法解决这个问题?

我唯一能想到的另一种方法是对一个regex运行输入,但是我必须进行测试,看看有什么更快。


不,你必须这样做:

1
2
3
4
5
6
7
8
boolean tryParseInt(String value) {  
     try {  
         Integer.parseInt(value);  
         return true;  
      } catch (NumberFormatException e) {  
         return false;  
      }  
}

…您可以这样使用它:

1
2
3
if (tryParseInt(input)) {  
   Integer.parseInt(input);  // We now know that it's safe to parse
}


ApacheCommons有一个integervalidator类,它似乎可以满足您的需要。Java提供了不内置的方法来执行此操作。


编辑——刚刚看到了您对与一个可能不好的输入数据相关联的性能问题的评论。我不知道parseint上的try/catch与regex相比有什么不同。我想,基于很少的硬知识,与Java中的Test/catch相比,正则表达式的性能不是很好。

不管怎样,我只想这样做:

1
2
3
4
5
6
7
8
9
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;
}