У меня есть метод main
, а также метод mainMenu
.Моя цель - позвонить mainMenu
после выполнения main
.Если пользовательский ввод не является целым числом, выведите его и вызовите метод mainMenu
.
Вот мои два метода:
private static Scanner s = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Welcome to Sea Bank!\n");
try {
TimeUnit.SECONDS.sleep(2);
} catch(InterruptedException e) {
Thread.currentThread().interrupt();
}
mainMenu();
}
public static void mainMenu() {
System.out.println("Please select an item below:");
System.out.println("(0) Login");
System.out.println("(1) Create Account");
System.out.print(">> ");
try {
int mainMenu = s.nextInt();
if (mainMenu == 0) {
login();
} else if (mainMenu == 1) {
System.out.println("coo create acc"); //add in account creation
}
} catch(InputMismatchException e) {
System.out.println("\nPlease enter an integer");
mainMenu();
}
}
Так что в основном, когда я вызываю mainMenu
метод в main
и ввод String вместо int, он возвращает StackOverFlowError вместо повторного запроса пользовательского ввода для int.
...
Please enter an integer
>>
Please enter an integer
>>
Please enter an integer
>>
Please enter an integer
>>
Please enter an integer
>> Exception in thread "main" java.lang.StackOverflowError
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3776)
at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
at java.util.regex.Pattern$Curly.match(Pattern.java:4227)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
at java.util.regex.Pattern$Ques.match(Pattern.java:4182)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
at java.util.regex.Matcher.match(Matcher.java:1270)
at java.util.regex.Matcher.matches(Matcher.java:604)
at java.util.Scanner.getCompleteTokenInBuffer(Scanner.java:963)
at java.util.Scanner.next(Scanner.java:1476)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at main.bank.seabank.Main.mainMenu(Main.java:35)
Я предполагаю, что пользовательский ввод несколько раз занимаетв "Пожалуйста, введите целое число" вместо того, чтобы разрешить фактический пользовательский ввод.Я просто не совсем уверен, как это исправить.