import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
try {
System.out.print("첫 번째 정수를 입력하세요: ");
int x = sc.nextInt();
break;
} catch (Exception e) {
System.out.println("정수만 입력해주세요");
sc.next();
}
}
}
}
try문에 오류가 나게되면(예를들어 d를 입력), 처음 버퍼에 d\n이 들어오고, nextInt가 d까지 읽으면서 입력포맷오류가 발생해 catch문으로 빠진다. 이때 d\n이 버퍼에 남은상태에서 내려가게되고, next는 \n 전까지 읽기때문에 버퍼에 남은 d를 받음으로써 다시 트라이문으로 돌아가는 것이다.