ホームページ > Java > &#&チュートリアル > `Scanner.nextDouble()` が `InputMismatchException` をスローするのはなぜですか? どうすれば修正できますか?

`Scanner.nextDouble()` が `InputMismatchException` をスローするのはなぜですか? どうすれば修正できますか?

Linda Hamilton
リリース: 2024-12-11 05:31:13
オリジナル
293 人が閲覧しました

Why Does `Scanner.nextDouble()` Throw an `InputMismatchException`, and How Can I Fix It?

スキャナーの 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート