JAVA/Java
자바에서 Scanner.nextInt() 후 nextLine() 입력받지 못할 때
dodop
2022. 1. 10. 18:12
Scanner를 이용해서 입력을 받으려고 할 때 nextInt()후 nextLine()을 이용하여 입력받지 못하고 끝나버리는 경우가 발생했다.
이러한 문제는 nextInt()는 개행문자(엔터 '\n') 전까지 숫자를 입력 받는 데 이후 개행문자 까지 입력을 받는 nextLine()을 사용하게 되면 버퍼에 남아있는 개행문자 하나만 입력을 받은 후에 메소드가 종료되기 때문에 발생 한다.
해결방안
public class InputView {
private static final Scanner sc = new Scanner(System.in);
public InputView() {
}
public static int inputPrice() {
System.out.println("구입 금액을 입력해 주세요.");
int price = sc.nextInt();
sc.nextLine();
return price;
}
}
Scanner.nextInt()를 사용한 후에는 Scanner.nextLine()을 한번 더 실행 하여 버퍼에 남아있는 개행문자를 제거한 후에 다시 Scanner.nextLine()을 통해 문자를 제대로 받아올 수 있다.