ホームページ  >  記事  >  Java  >  Double 値を入力すると Scanner.nextDouble() が InputMismatchException をスローするのはなぜですか?

Double 値を入力すると Scanner.nextDouble() が InputMismatchException をスローするのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-06 19:42:03984ブラウズ

Why Does Scanner.nextDouble() Throw an InputMismatchException When Inputting a Double Value?

Double 値入力での InputMismatchException エラーのトラブルシューティング

Double 値を扱う場合、Scanner.nextDouble() を使用すると、InputMismatchException が発生することがよくあります。入力を読み取ります。この例外は、ユーザーが文字列や小数点のない整数などの無効な double 値を入力したときに発生します。

次のコードを考えてみましょう。

public double checkValueWithin(int min, int max) {
    double num;
    Scanner reader = new Scanner(System.in);
    num = reader.nextDouble(); // Throws InputMismatchException if input is invalid        
    while (num < min || num > max) {
        System.out.print("Invalid. Re-enter number: ");
        num = reader.nextDouble();
    }
    return num;
}

このコードは、次のユーザー入力を検証します。指定された範囲内の double 値。ただし、ユーザーが (小数点としてドットを使用して) "1.2" のような値を入力すると、InputMismatchException がスローされます。

この問題を解決するには、必ずカンマ (,) の代わりに使用してください。 double 値を入力する場合は、小数点としてドット (.) を使用します。たとえば、「1.2」の代わりに「1,2」と入力します。あるいは、Scanner.next() などの別のメソッドを使用し、入力を double として手動で解析し、発生する可能性のある例外を処理することもできます。

以上がDouble 値を入力すると Scanner.nextDouble() が InputMismatchException をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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