나는 프로그래밍에 완전히 새롭고 나는 InputMismatchException을 잡을 때 루프 내 main while 회귀로 돌아갈 수없는 문제에 봉착했다. 나는 Google을 검색했는데 사용자가 제공 한 솔루션을 찾아서 완전히 이해할 수는 없습니다.어떻게 연장 할 ... while 회 돌이 예외 catch 후
내 목표는 사용자가 종료 신청을 할 수있는 문자를 입력 할 가능성을 없애는 것입니다. 그래서 거의 모든 코드를 try/catch로 둘러 쌌다.
나는 내 코드에 더 많은 루프를 넣어 시도하고 모두는 2 가지 방법으로 종료 :- 내 루프는 catch 문에 도달 한 후 완료되지 않았다.
- 나는 콘솔로 되돌아 왔고 아무 일도 일어나지 않았다. (나는 여전히 거기에 입력 할 수있다.)
누군가 내 목표에 도달하는 방법을 설명 할 수 있습니까? 나는 또한 hasNextInt가 적절한 값을 입력하도록 다시 요청할 것이라고 기대했지만 시도하지 않았습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 응용 프로그램을 디버깅하고 볼 수있는 것은 코드가 끝날 때까지 프로 시저를 건너 뛰는 것입니다. 이 예외를 얻을 때, 콘솔 나쁜 형식으로 읽이 존재하는 예외 nextInt()
을 가지고 있으며, InputMismatchException을 줄 것이다
Scanner scanner = new Scanner(System.in);
System.out.print("\nChoose mode: ");
int userInput = 0;
do {
do {
try {
userInput = scanner.nextInt();
switch (userInput) {
case 1:
Mode_1.multiplyTwoInteger();
break;
case 2:
Mode_2.multiplyTwoSpecifiedValues();
break;
case 3:
System.out.println("\nYou quit application. Goodbye :)");
return;
default:
System.out.print("Not found! Choose again game mode: ");
}
} catch (Exception InputMismatchException) {
System.out.print("Wrong input!\nChoose again:");
}
} while (userInput <= 0 || userInput > 3);
} while (userInput != 3);
나에게 새로운 지식 즉. 이런 식으로 작동하는지 몰랐습니다. 솔루션 주셔서 대단히 감사합니다. – Ahlen