• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:do文とInputMismatchException処理)

do文とInputMismatchException処理

このQ&Aのポイント
  • JavaのScannerを使用して0~6の整数を入力する際に、InputMismatchExceptionが発生し、再度入力を求めずに無限ループになってしまう問題があります。
  • この問題を解決するには、whileループの条件を変更して再入力を促す必要があります。
  • 具体的には、whileループの条件をaが0以下または6以上の場合にtrueとして設定します。

質問者が選んだベストアンサー

  • ベストアンサー
  • isle
  • ベストアンサー率51% (77/150)
回答No.2

> e.printStackTrace(); > の後にa=sc.nextInt()を加えるのでしょうか? > これでは例外発生後に終了してしまいました. > a=next();ではint aに矛盾してしまいますし. InputMismatchExceptionのcatchブロックに、 sc.next(); を加えると良いと思います。 #e.printStackTrace(); #の前でも後でも構いません。 InputMismatchExceptionのcatchブロックが実行されるとき、 aに値は代入されず繰り返し条件は真となるので、 この場合、特にaに何か代入する必要はありません。

20203
質問者

お礼

うまくいきました. 本当にありがとうございました.

その他の回答 (1)

  • isle
  • ベストアンサー率51% (77/150)
回答No.1

'a'という入力が捨てられないので、ループして(Scannerの)nextIntメソッドで再び例外が発生することを繰り返します。 InputMismatchExceptionが発生したとき、(Scannerの)nextメソッドで入力を捨てるようにすると良いと思います。

20203
質問者

補足

ご回答ありがとうございます. >'a'という入力が捨てられないので、ループして(Scannerの)nextIntメソッドで再び例外が発生することを繰り返します。 確かにそうですね.どうやってこの`a'を消そうかわかりませんでした. >InputMismatchExceptionが発生したとき、(Scannerの)nextメソッドで入力を捨てるようにすると良いと思います。 これはどういうことでしょうか. e.printStackTrace(); の後にa=sc.nextInt()を加えるのでしょうか? これでは例外発生後に終了してしまいました. a=next();ではint aに矛盾してしまいますし.

関連するQ&A