-1

私のプログラムでscanner.NextDouble()を使用していて、ユーザーがdoubleではないもの、つまりあらゆる種類のcharを入力した場合、有効なdoubleを入力するように再プロンプトするにはどうすればよいですか? 私は例外をスローしてそれをキャッチしようとしましたが、私ができることは、それが間違っていたことを伝えることだけです。制御をtryブロックに戻す方法がわかりません。誰かが何か意見を持っていれば、それは大歓迎です!

private double requestDoubleFromUser( String prompt )
{
    /*** Local Variables ***/

    Scanner sc = new Scanner( System.in );
    double userInput = 0;

    try
    {
    /*** Get input from user ***/

    System.out.print( prompt );
    userInput = sc.nextDouble();
    }

    catch( Exception e )
    {
        System.out.println("That was not a double");
    }

    return userInput;
}

ありがとう

4

2 に答える 2

3

while次のようなループ を使用できます。

double userInput = 0;
boolean done = false;
while (!done) {
    try {
        /*** Get input from user ***/
        System.out.print( prompt );
        userInput = sc.nextDouble();
        done = true;
    } catch( Exception e ) {
        System.out.println("That was not a double");
    }
}
于 2013-05-15T19:05:29.357 に答える
0

への呼び出しをScanner#nextDoubleループに配置し、 をキャッチすることで非数値型を使用できますInputMismatchException。型を使用Doubleすると、ループで入力値をチェックし続けることができます。

Scanner sc = new Scanner(System.in);
Double userInput = null;

while (userInput == null) {
    try {
        System.out.print("Enter double:");
        userInput = sc.nextDouble();
    } catch (InputMismatchException e) {
        System.out.println("That was not a double: " + sc.nextLine());
    }
}
于 2013-05-15T19:11:23.450 に答える