スキャナーの double 値 InputMismatchException
Java プログラマは、nextDouble() メソッドを使用して double 値をスキャンしようとすると、一般に InputMismatchException に遭遇します。この例外は、予期されるデータ形式と提供された実際の入力との間に不一致があることを示します。
発生理由
入力が予期された数値に適合しない場合、InputMismatchException が発生します。形式。指定されたコード スニペットでは、スキャナーはロケールを使用して明示的に構成されていません。これにより、システムのデフォルト ロケールが使用されることになり、異なる小数点区切り文字を使用することができます (ヨーロッパの一部の国では、「.」の代わりに「,」を使用するなど)。スキャナが入力を解釈するとき、カンマ区切りの 10 進数が期待されますが、代わりにドット (.) が検出されます。
問題を回避する方法
これを解決するにはこの問題が発生した場合は、スキャナのロケールを、想定される小数点区切り文字を使用するロケールに明示的に設定できます。これにより、スキャナーは指定されたロケールに基づいて入力を正しく解釈できるようになります。
ソリューション
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
Locale.US を使用することで、スキャナーはドット「.」を必要とするロケール小数点区切り文字として使用します。これは、期待する入力形式 (5.1) と一致し、InputMismatchException を防ぎます。
以上が`Scanner.nextDouble()` が `InputMismatchException` をスローするのはなぜですか? どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。