ホームページ >Java >&#&チュートリアル >Java スキャナーで Double 値を読み取る際の InputMismatchException を解決する方法?

Java スキャナーで Double 値を読み取る際の InputMismatchException を解決する方法?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-09 06:15:161006ブラウズ

How to Resolve InputMismatchException When Reading Double Values with Java Scanner?

スキャナーの double 値 - InputMismatchException 解決済み

スキャナーを使用して double 値を読み取るときに、InputMismatchException が発生することは、Java 開発者が直面する一般的な問題です。この例外は、入力から取得したトークンが予期されたデータ型と一致しない場合、またはその型の範囲外である場合に発生します。

問題:

次のコードを考えてください。 :

double gas, efficiency, distance, cost;
Scanner scanner = new Scanner(System.in);

System.out.print("Enter the number of gallons of gas in the tank: ");
gas = scanner.nextDouble();
System.out.print("Enter the fuel efficiency: ");
efficiency = scanner.nextDouble();

このコードを実行し、ガスと効率の両方に「5.1」などの値を入力すると、 InputMismatchException.

原因:

スキャナーで使用されるデフォルトのロケールが、入力値の予期される形式と一致しない可能性があります。たとえば、「,」が小数点の区切り文字として使用されているロケールでは、「5,1」のような入力は有効な double 値として解釈されますが、「.」が使用されているロケールでは、「5,1」のような入力は有効な double 値として解釈されます。

解決策:

この問題を回避するには、useLocale() を使用してスキャナーのロケールを指定する必要があります。

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);

ロケールを Locale.US に設定すると、スキャナーはメソッド内の値を期待します。米国形式。「.」

説明:

useLocale() メソッドを使用すると、開発者はスキャナが値を解析するために使用するロケールを定義できます。これにより、スキャナーは指定されたロケールに対して正しい形式の値を期待することができます。

以上がJava スキャナーで Double 値を読み取る際の InputMismatchException を解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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