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