str という文字列変数を解析する次のコードがあります。
NumberFormat formatter = NumberFormat.getInstance();
Number number = formatter.parse(str);
str が数値ではない場合にスローされる例外をキャッチして、検証したいだけです。私が抱えている問題は、期待される ParseException が常にスローされるとは限らないことです。文字列 str が数字で始まり、その後文字である場合、文字列の最初の文字を取得し、それらを数字として解析するようです。
例えば:
- str="a10" の場合、ParseException がスローされます
- str="10a" の場合、例外はスローされず、number=10
Double.parseDouble(str) は使用できません。str には 1,000.98 のようなコンマとポイントを含めることができ、この形式はこのメソッドでは認識されないためです。
なぜこうなった?他の方法で検証できますか?ありがとう