ホームページ >Java >&#&チュートリアル >スキャナーの二重値: InputMismatchException - 発生する理由と回避方法?

スキャナーの二重値: InputMismatchException - 発生する理由と回避方法?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-22 20:56:11569ブラウズ

Scanner Double Value: InputMismatchException - Why Does It Occur and How Can It Be Avoided?

Scanner Double Value Exception:InputMismatchException

問題の概要:

Scanner クラスを使用する場合コンソールから double 値を読み取ると、ユーザーは次のような問題に遭遇する可能性があります。 InputMismatchException。このエラーは、入力が予期されたデータ型 (この場合は double) と一致しない場合に発生します。

質問:

  • この例外は次の場合に発生するのはなぜですか? Scanner を使用して double 値を読み取りますか?
  • この例外はどのように発生しますか?回避されましたか?

答え:

1.例外はなぜ発生しますか?

スキャナのデフォルト ロケールが小数点区切り文字としてピリオド (.) を使用するように構成されていないため、InputMismatchException がスローされます。デフォルトでは、多くのロケールでは小数点区切り文字としてカンマ (,) が使用されます。ただし、Java の浮動小数点数では、小数点の区切り文字としてピリオドを使用することが想定されています。スキャナーが小数点区切り文字としてカンマを使用する入力から double 値を読み取ろうとすると、それを整数として解釈し、InputMismatchException.

2 を引き起こします。例外を回避する方法:

InputMismatchException を回避するには、次の手順を実行できます:

  • ロケールを指定します: スキャナーの明示的な設定ロケールを小数点区切り文字としてピリオドを使用するロケールに変更します。これは useLocale メソッドを使用して実行できます:
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
  • 正規表現を使用する: nextDouble メソッドを使用する代わりに、正規表現を使用して double 値を検証および抽出します。ユーザー入力から。このアプローチにより、入力形式をより詳細に制御できるようになります。

以上がスキャナーの二重値: InputMismatchException - 発生する理由と回避方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。