🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

scanner 문제풀이4 (11분26초)

24.05.26 21:19 작성 조회수 84

0

안녕하세요.

scanner 공부하면서 궁금증이 생겨서 질문 하게 되었습니다.

Scanner input=new Scanner(System.in);

int option= input.nextInt();

위의 코드가 enter를 해결해주지 못하기 때문에 input.nextLine()을 사용하셔서 해결하신다고 하셨는데 이 부분이 잘 이해가 되지 않아서 질문드립니다.

앞 전의 강의를 통해서 제가 이해한 input.nextLine()의 용도는 사용자가 입력한 한 줄의 문자를 가져오는 역할라고 이해했습니다.

그런데, input.nextLine()이 enter의 역할로도 사용할 수 있는건가요?

그런데, 햇갈리는 부분은 아래 부분(수량, 상품가격)에서는 input.nextLine()을 추가로 사용하지 않고 input.nextInt()만 사용해도 문제가 없는데, 왜

input.nextLine();

System.out.print("상품명:");

String name=input.nextLine();

 

이 부분에서는 필요한지 잘 모르겠습니다.

input.nextLine(); 의 역할에 대해 알려주시면 감사하겠습니다^^

 

답변 2

·

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2024.05.26

안녕하세요. chlqhal0420님, 공식 서포터즈 OMG입니다.

문자열 타입이 아닌 int, double 등의 타입에 대한 입력을 받기 각 타입별로

int를 받기위해 input.nextInt();

double을 받기 위해 inpt.nextDouble();과 같이 사용할 수 있습니다.

사용자가 숫자만 딱 입력하지 않고 다음 프로세스 진행을 위해 엔터를 입력하는 것은 이해하시리라 생각합니다.

3(입력) + 엔터

=> 다음 프로세스 진행

이렇게 반드시 숫자를 입력하고 나면 다음 명령을 위해 엔터가 필수로 요구됩니다.

nextLine();은 이러한 엔터를 받고 다음 명령을 진행하기 위해 사용합니다.

당연히 문자열이라면 엔터까지 포함이 되어 필요없지만 문자열이 아니라면, 이 엔터 입력을 받기 위한 작업이라고 이해하시면 될 것 같습니다.

 

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.05.26

안녕하세요, 인프런 AI 인턴입니다.

chlqhal0420님의 질문에 대해, input.nextLine()의 역할, 특히 input.nextInt()input.nextLine()을 같이 사용할 때 왜 input.nextLine()이 추가로 필요한지에 대한 설명이 필요해 보입니다.

Java에서 Scanner 객체의 nextInt() 메서드를 사용하면 정수를 입력받은 후 엔터키(개행문자)가 입력 버퍼에 남게 됩니다. 그래서 바로 다음에 nextLine()을 호출할 때, 이 남아있는 엔터키(개행문자)를 입력으로 인식하고 넘어가, 사용자가 문자열을 입력할 기회 없이 다음 코드로 넘어가버리는 문제가 발생합니다. 따라서, nextInt() 메서드 뒤에 nextLine()을 한 번 더 호출하여 이렇게 입력 버퍼에 남은 엔터키(개행문자)를 소비하는 용도로 사용합니다. 이렇게 함으로써, 사용자로부터 의도한 문자열 입력을 제대로 받을 수 있습니다.

질문하신 상황에서 input.nextLine()이 필요한 이유는 바로 이러한 입력 버퍼를 비우는 작업 때문입니다. 사용자가 입력한 정수값 다음에 입력하는 문자열값(상품명)을 정확하게 받기 위해서 사용됩니다.

이 문제에 대한 구체적 예시와 설명이 들어있는 유사한 답변 링크는 다음과 같습니다:

chlqhal0420님의 경우, input.nextInt();를 사용한 뒤, 정수 입력 받고 난 후에 남은 엔터키를 소비하기 위해 input.nextLine();을 추가로 사용해야 하는 것입니다. 이 로직은 사용자로부터 문자열 입력을 받기 전에 항상 필요한 절차입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

채널톡 아이콘