parseInt を実行すると:
Integer.parseInt(myString);
それはスローします:
NumberFormatException: For input string: ""
これは、私がこのようなことをしたということですか?
if(StringUtils.isNotBlank(myString))
return Integer.parseInt(myString);
else
return 0;
はい、しかし:それを薄い方法でラップする(そして冗長性を排除する)か、 Commons Langのelse
ような既存の実装を使用してください:NumberUtils.toInt(str, defaultValue)
NumberUtils.toInt(myString, 0);
このメソッドは、null
値と変換の失敗を処理します。
同じことを自分で書くのは簡単です。
NumberFormatExtension
...例外をラップする代わりに、条件演算子を使用できます。
return StringUtils.isNotBlank(myString) ? Integer.parseInt(myString) : 0;
複数の場所でこれを行う必要がある場合は、おそらくこれを別のメソッドに入れたいと思うでしょう。myString
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);
はい。(入力内容を検証してから、入力内容を推測してください。:-)
Apacheのcommon-langw/をすでに見つけている場合は+1 StringUtils
。
Integer.parseInt(String)
nullや空の文字列など、数値以外の入力は受け入れません。
あなたが提案したようにそれを防ぐか、NFEを捕まえてください。
なぜこれを探していたのかわかりませんが、簡単な方法は次のとおりです。
int test=str.isEmpty()?0:Integer.parseInt(str);