0

ダブルを期待するスキャナーで InputMismatchException をキャッチしようとしています。入力が「c」または「q」に等しい場合は、catch ブロックで特定のコードを実行したいと考えています。例外がスローされた後にユーザー入力の値を取得する方法があるかどうか疑問に思っています。たとえば、コードが double を呼び出し、ユーザーが文字「c」を入力した場合、具体的に「c」が入力されたことを知り、true の場合は何かを実行できるようにしたいと考えています。これが私が書こうとしているコードです。ここで、「getValue()」は、私が達成しようとしていることを説明するために作成されたメソッド名です。

double value = 0.0;

try{
    System.out.print("\nEnter a number: ");
    value = input.nextDouble();
}
catch(InputMismatchException notADouble){
    if(notADouble.getValue().equalsIgnoreCase("c")){
        //run the specific code for "c"
    }
    else if(notADouble.getValue().equalsIgnoreCase("q")){
        //run the specific code for "q"
    }
    else{
        System.out.print("\nInvalid Input");
    }
}

ご意見をお寄せいただきありがとうございます:)

4

2 に答える 2

2

Scanner.hasNextDouble()Scanner が数値への変換を試行する前に、入力を検証するために使用します。このようなものが動作するはずです:

  double value = 0.0;

  Scanner input = new Scanner(System.in);

     System.out.print("\nEnter a number: ");
     while(input.hasNext())
     {
        while(input.hasNextDouble())
        {
           value = input.nextDouble();
        }

        String next = input.next();

        if("c".equals(next))
        {
           //do something
        }
        else if("q".equals(next))
        {
           //do something
        }
        else
        {
           System.out.print("\nInvalid Input");
           //return or throw exception

        }
     }
于 2013-10-19T17:09:22.573 に答える
-1

入力を文字列として読み取ってから、変換を行う必要があります。

于 2013-10-19T17:08:14.880 に答える