작성
·
281
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
1. 실전자바 섹션2에 문제와 풀이 15:15 부분정도에서
scanner.nextInt()가 가격한번 받고 아래에 수량 받는데
가격을 입력받는 scanner.nextInt() 뒤에는 scanner.nextLine()을 추가하지 않고 수량을 입력받는 scanner.nextInt() 다음에 scanner.nextLine()을 쓴 이유가 어떻게 될까요?
int가 연속으로 올때는 안써도 되는건가요? 그 이유가 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
김도운님의 질문은 scanner.nextInt()
를 사용해 값을 입력 받은 후에 왜 어떤 경우에는 scanner.nextLine()
을 호출하고, 어떤 경우에는 호출하지 않는지에 대한 궁금증을 나타내고 있습니다. 이는 자바의 Scanner
클래스 사용 시 흔히 발생하는 혼란 중 하나입니다.
같은 맥락의 질문에 대한 답변이 이미 인프런 Q&A 게시판에 존재합니다. nextInt()
를 연속해서 사용하고 나서 문자열을 입력받기 위해 nextLine()
을 사용하는 상황에서, nextInt()
는 입력 버퍼에서 정수와 함께 입력받은 엔터 키(개행 문자)까지 처리하지 않고 다음 입력을 위해 엔터 키를 입력 버퍼에 남겨두는 특성을 가지고 있습니다. 이 때문에 바로 뒤에 오는 nextLine()
은 남아있던 엔터 키를 입력으로 삼아버려 실제로 사용자로부터 정보를 입력받지 못하고 넘어가는 문제를 방지하기 위해 사용됩니다.
정수 값을 연속으로 입력받는 경우에는 nextInt()
메소드가 뒤에 오는 엔터 키를 무시하므로 nextInt()
를 연속해서 사용할 때는 nextLine()
을 사용하지 않습니다. 그러나, 정수 입력 후 문자열 입력을 받으려 할 때 nextLine()
을 사용할 경우 문제가 발생할 수 있어 엔터 키를 소비하기 위해 nextLine()
을 한 번 더 호출하는 것입니다.
아래는 이와 유사한 상황에 대해서 설명하고 있는 기존의 답변입니다:
위 링크된 답변들을 통해 scanner.nextInt()
및 scanner.nextLine()
의 사용법과 함께 그 이유에 대해 더 자세히 알아보시기를 권장합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.