-
자바에서 Scanner.nextInt() 후 nextLine() 입력받지 못할 때JAVA/Java 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()을 통해 문자를 제대로 받아올 수 있다.
'JAVA > Java' 카테고리의 다른 글
IllegalStateException VS IllegalArgumentException (0) 2022.02.13 Java 8 Stream (0) 2022.01.14 자바에서 메소드 순서 (0) 2022.01.10 Java Optional의 사용 (0) 2022.01.06 자바에서 static의 사용 (0) 2021.12.30