文字列を数値に変換する必要があります。問題は、文字列がユーザー入力であり、その後に単位が含まれている可能性があるため、数値部分が事実上接頭辞になっていることです。ここではいくつかの例を示します。
"8.1 in"
"3.0cm"
"90%"
"4'"
番号の抽出に問題があります。NumberFormat.parse() は有望に見えました。ただし、動作が不安定です。"4%" と "4x" を 4.0 にうまく解析しますが、"4'" と "4," (Locale.US) で ParseException をスローします。
Scanner も有望に見えましたが、数値部分と単位の間に区切り文字がないため、最後の 3 つのケースでは失敗しました。floatを最初の不正な文字まで確実に解析し、ロケールに関係なく正しく解析するにはどうすればよいですか?