스캐너와 무한 루프를 사용하여 정수를 얻으려고합니다. 이 문제를 해결할 수있는 해결책을 알고 있지만 첫 번째 접근 방식이 제대로 작동하지 않는 이유가 궁금합니다.예외가 발생할 때까지 Java try and catch
첫 번째 반복에서 작동하지만 화면에 "유효하지 않음, 다시 시도하십시오"라는 메시지가 영원히 계속 표시됩니다. Scanner API doc 가입일
스캐너와 무한 루프를 사용하여 정수를 얻으려고합니다. 이 문제를 해결할 수있는 해결책을 알고 있지만 첫 번째 접근 방식이 제대로 작동하지 않는 이유가 궁금합니다.예외가 발생할 때까지 Java try and catch
첫 번째 반복에서 작동하지만 화면에 "유효하지 않음, 다시 시도하십시오"라는 메시지가 영원히 계속 표시됩니다. Scanner API doc 가입일
:
스캐너가 InputMismatchException을 발생스캐너는 검색 또는 몇몇 다른 방법을 통해 스킵 될 수 있도록, 예외를 유발 한 토큰을 전달하지 않을 것이다.
그래서 유효하지 않은 토큰은 다른 예외를 일으키는 원인이 여전히 존재하고 서로 다른 ...
Scanner myScanner = new Scanner(System.in);
int x = 0;
while(true){
try{
System.out.println("Insert a number: ");
x = myScanner.nextInt();
break;
}catch(InputMismatchException e){
System.out.println("Invalid, try again.");
myScanner.next(); // skip the invalid token
// continue; is not required
}
}
@LukeLee's solution에 대한 대안 :
Scanner myScanner = new Scanner(System.in);
int x = 0;
while(true){
try{
System.out.println("Insert a number: ");
x = Integer.parseInt(myScanner.next());
break;
}catch(NumberFormatException e){
System.out.println("Invalid, try again.");
// continue is redundant
}
}
감사합니다! 나는 스캐너에 관한 그 작은 세부 사항을 몰랐다. 현재 작동 중입니다. D –