try-catch文で「0から2の数字の判定」、「文字列かどうかの判定」を行いたいです。
「0から2」以外が入力された場合、エラーメッセージを表示し最初の選択肢に戻るを実行させたいです。
発生している問題・エラーメッセージ
「0から2の数字の判定」はうまくいくのですが、「文字列かどうかの判定」をしたときにエラーメッセージが表示されるとともに、選択の余地なくif文の処理が勝手に実行されてしまいます。
該当のソースコード
Java
1package JankenGame; 2 3import java.util.InputMismatchException; 4import java.util.Scanner; 5 6//Playerクラス 7class Player extends TotalPlayer { 8 Scanner scanner = new Scanner(System.in); 9 private int myHand; 10 11 /** 12 * Playerの手を入力するメソッド 13 * 14 * @return 整数値の標準入力 15 */ 16 int getHand() { 17 return this.myHand; 18 } 19 20 void getJudgeHand() { 21 while (true) { 22 try { 23 System.out.println("コマンド? 0:グー 1:パー 2:チョキ"); 24 this.myHand = scanner.nextInt(); 25 if (this.myHand <= 2) { 26 break; 27 } 28 } catch (InputMismatchException e) { 29 System.out.println("整数値ではありません"); 30 break; 31 } 32 System.out.println("0から2で入力してください"); 33 } 34 } 35 36}
試したこと
breakを消したり、他の位置に移動させてみたりしましたが解決策がわかりません。
デバック機能も使用してみたのですが、原因はつかめませんでした。
不勉強で申し訳ありませんが、アドバイスなど頂けたらと思います。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー