Scanner 클래스 사용자 입력값 버리는 법(.next()와 .nextLine() 차이)

하히호호·2024년 4월 1일
0

문제를 풀면서 Scanner 함수를 이용해 문제를 풀때,
사용자에게 받는 입력값이 2개 이상인 경우, 이전에 받은 입력값이 남아있어 원하는 프로그램이 돌아가지 않을때가 있다.

아래의 문제를 풀때도 같은 일이 있었다.

https://velog.io/@haha_hoho/김영한의-자바-입문-문제-상품구매

위의 문제를 리뷰해보자.
scanner.nextInt();로 값을 받을때 사용자가 값을 입력하고 \n을 누르면
숫자만 변수에 들어가고 \n값이 남아서 다음 입력값에 그대로 \n만 들어가는 상황이 발생했다.
이 경우를 위해 문제에서는 scanner.nextLine();을 사용해서 입력값을 의도적으로 버렸다.

.next() vs .nextLine()

  • .next() : 사용자 입력 갑에서 스페이스(\n)와 Enter를 인식해 문자열을 리턴한다.

  • .nextLint() : Enter를 인식하여 문자열을 리턴한다.

.nextLint()

이렇게 Enter만 인식해서 띄어쓰기가 가능하다.

.next()

이렇게 공백을(\n)을 인식해서 띄어쓰기가 불가능하다.
즉, 공백이 나오기 전의 값만 인식한다.

중요한 것은 위의 문제처럼 사용자 입력값이 계속 살아있는가?이다.

사용자 입력값이 살아있다.
.nextInt()나 .nextDouble()처럼 사용자 입력값이 살아있으니,
값의 오류가 나지 않도록 nextLine()을 사용해서 입력값을 한번 버려주자.

profile
읽히는 코드를 짜고싶습니다.

0개의 댓글