Java のParseIntメソッドは、例外をスローすることなく、先頭にゼロを付けて提供された 10 進数値を喜んで解析し、ゼロを取り除きます。
int value = Integer.parseInt("050", 10);
整数値 50 になります。
しかし、このような文字列を無効な入力として拒否する必要があるアプリケーションがあります。これまでの問題に対する私の解決策は、解析された整数を文字列に変換し、元の/解析された文字列の長さを比較して、文字が削除されているかどうかを確認することでした。
String original = "050";
value = Integer.parseInt( "050", 10);
String parsed = Integer.toString(value);
if (original.length() != parsed.length()) {
System.exit(1);
}
これは問題なく動作しますが、少しハッキーに感じます。先行ゼロを検出して処理するより良い方法はありますか?