正确的方法是避免parseInt为输入字符串抛出NumberFormatException:“”

当我运行parseInt时:

Integer.parseInt(myString); 

它抛出:

 NumberFormatException: For input string: "" 

这是否意味着我做了类似的事情?

 if(StringUtils.isNotBlank(myString)) return Integer.parseInt(myString); else return 0; 

好吧,你可以使用条件运算符:

 return StringUtils.isNotBlank(myString) ? Integer.parseInt(myString) : 0; 

如果您需要在多个地方执行此操作,您可能希望将其放入单独的方法中。 请注意,您还应该考虑myString为null或包含非数字文本的情况。

是的,但是:用一个瘦方法包装它(并消除多余的else ),或使用现有的实现,如Commons Lang的NumberUtils.toInt(str, defaultValue)

 NumberUtils.toInt(myString, 0); 

此方法处理null值和转换失败。

如果字符串可以为空,我这样做:

 Integer.parseInt("0" + inputString) 

当我不确定它只包含数字时:

 Integer.parseInt(0 + inputString.replaceAll("\\D+","")) 

你有什么是好的,但作为一种编码风格,我更喜欢使测试“正面”( isBlank ),而不是“负面”( isNotBlank ),即

 if (StringUtils.isBlank(myString)) { return 0; } return Integer.parseInt(myString); // Note: No need for else when the if returns 

或者,更简洁:

 return StringUtils.isBlank(myString) ? 0 : Integer.parseInt(myString); 

是。 (在对其中的内容做出假设之前validation您的输入。:-)

+1已经找到了Apache的常用语言和StringUtils

Integer.parseInt(String)不接受非数字输入,包括空值和空字符串。

要么像你建议的那样防范,要么抓住NFE。

我不知道为什么我要搜索这个,但这是简单的方法:

 int test=str.isEmpty()?0:Integer.parseInt(str);