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
を削除する)か、 CommonsLangのNumberUtils.toInt(str, defaultValue)
のような既存の実装を使用します。
NumberUtils.toInt(myString, 0);
このメソッドは、null
値と変換の失敗を処理します。
同じことを自分で書くのは簡単です。
NumberFormatExtension
例外をラップします文字列が空になる可能性がある場合は、次のようにします。
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);
なぜこれを検索したのかわかりませんが、簡単な方法は次のとおりです。
int test=str.isEmpty()?0:Integer.parseInt(str);
はい。 (入力内容を推測する前に、入力内容を検証してください。:-)
StringUtils
でApacheのcommon-langをすでに見つけている場合は+1。
Integer.parseInt(String)
は、nullや空の文字列などの数値以外の入力を受け入れません。
あなたが提案したようにそれを防ぐか、NFEを捕まえてください。