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

Moc*_*ish 14 java string parseint

当我运行parseInt时:

Integer.parseInt(myString);
Run Code Online (Sandbox Code Playgroud)

它抛出:

NumberFormatException: For input string: ""
Run Code Online (Sandbox Code Playgroud)

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

if(StringUtils.isNotBlank(myString))
  return Integer.parseInt(myString);
else
 return 0;
Run Code Online (Sandbox Code Playgroud)

Dav*_*ton 26

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

NumberUtils.toInt(myString, 0);
Run Code Online (Sandbox Code Playgroud)

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


Jon*_*eet 13

那么,您可以使用条件运算符:

return StringUtils.isNotBlank(myString) ? Integer.parseInt(myString) : 0;
Run Code Online (Sandbox Code Playgroud)

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


Ole*_*lov 6

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

Integer.parseInt("0" + inputString)
Run Code Online (Sandbox Code Playgroud)

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

Integer.parseInt(0 + inputString.replaceAll("\\D+",""))
Run Code Online (Sandbox Code Playgroud)