InputMismatchException
をキャッチしようとしましたが、menu()
メソッドが再び呼び出されたときに、エラーでスタックするまでループします。Java try catch(InputMismatchException)予期しないループ
try catch
私の目的はエラーメッセージを受け取った後、menu()
メソッドを再度開始することでした。
public class Menu extends ProfilesManager {
static Scanner sc = new Scanner(System.in);
public static void menu() {
int number;
System.out.println("** Welcome... **\n ");
System.out.println("* what you wanna do?:\n");
System.out.println("(1) Login \n(2) Register \n(3) Find User \n(4) Exit\n");
System.out.print("-Answer?: ");
try {
number = sc.nextInt();
if (number == 1) {
Login();
} else if (number == 2) {
Register();
} else if (number == 3) {
FindUser();
} else if (number== 4) {
Exit();
}
} catch (InputMismatchException e) {
System.out.println("Error , only numbers!!");
menu();
}
}
}
}
あなたはそれをクリアしていないと
Scanner
はそれを読んで続けると、すべての時間は、それはあなたのcatchブロックでそれをクリアする必要があなたにInputMisMatchException
を与えるのだろうか?何かを再起動したいのであれば、再帰ではなく実際のループを使用してください –
'catch 'ブロック内で' menu() 'を呼び出さなければならないと思います。 – Yazan
menuPrinc()メソッドはmenu()メソッドです。ごめんなさい! –