我想抓住一个机会 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();
}
}
}
}
3条答案
按热度按时间mefy6pfw1#
你有无限的递归。如果要再次调用,必须将menu()移出catch块。否则就是无限循环。
mctunoxg2#
我想你应该写信
sc = new Scanner(System.in);
之后System.out.println("Error , only numbers!!");
k2fxgqgv3#
这是因为一旦输入错误。你没有清理它
Scanner
会一直读下去,每次都会给你InputMisMatchException
你得把它放在你的拦网里