-
[JAVA] Scanner nextInt()는 '엔터'를 인식할 수 없다Java 2022. 11. 23. 16:15
Scanner 클래스는 콘솔의 입력값을 받기 위해 주로 사용되는데, 여기에 있는 메서드 중 next(), nextInt()를 포함한 nextXXX() 시리즈를 사용할 때, 바로 다음에 사용된 nextLine() 코드가 스킵되는 현상이 발생한다.
이는 nextInt가 '엔터'를 인식하지 못하기 때문이다.
인식하지 못한 엔터는 코드 허공에 둥둥 떠다니다가 다음 nextLint()을 만났을 때 그 안에 들어가게 된다.
그럼 nextLint()에서는 빈 스트링('') 인 상태에서 엔터를 인식하고 다음 코드로 넘어가게 되는 것이다.
해결방법
해결하려면 nextInt()를 쓰지 않는 것이 방법일 것 같다.
그럼 숫자는 어떻게 넣어야 할까? nextLine()으로 쓴 뒤 그것을 Integer.parseInt()로 감싸주는 방법이다.
num = Integer.parseInt(sc.nextLine());
이렇게 하면 엔터도 인식하여 다음 nextLine()이 스킵되는 현상이 발생하지 않는다.
'Java' 카테고리의 다른 글
[JAVA] null 예외를 깔끔하게 해주는 Optional 클래스 (0) 2022.12.01 [JAVA] String 변수 값이 같은지 확인할 때는 equals()를 사용하자(쓰지마 ==) (0) 2022.11.23 [JAVA] 변수 타입 확인하기 (0) 2022.11.23 Arrays.asList vs List.of 차이 (0) 2022.11.22 String.format()? (0) 2022.11.21