我试图捕获一个InputMismatchException
,它在第一种情况下起作用,但是当再次调用menu()
方法时,它开始循环,直到陷入错误。
在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
会继续读取它,每次它将给您InputMisMatchException
您需要在catch块中清除它
}catch(InputMismatchException e){
System.out.println("Error , only numbers!!");
sc.nextLine();
// Put 2 second delay
try{
Thread.sleep(2000);
}catch(InterruptedException ex){
ex.printStackTrace();
}
menu();
}
关于java - Java try catch (InputMismatchException)意外循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37137790/