ホームページ >Java >&#&チュートリアル >Java スキャナーで Double 値を読み取る際の InputMismatchException を解決する方法?
スキャナーの 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 サイトの他の関連記事を参照してください。