작성
·
191
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
안녕하세요. chlqhal0420님, 공식 서포터즈 OMG입니다.
문자열 타입이 아닌 int, double 등의 타입에 대한 입력을 받기 각 타입별로
int를 받기위해 input.nextInt();
double을 받기 위해 inpt.nextDouble();과 같이 사용할 수 있습니다.
사용자가 숫자만 딱 입력하지 않고 다음 프로세스 진행을 위해 엔터를 입력하는 것은 이해하시리라 생각합니다.
3(입력) + 엔터
=> 다음 프로세스 진행
이렇게 반드시 숫자를 입력하고 나면 다음 명령을 위해 엔터가 필수로 요구됩니다.
nextLine();은 이러한 엔터를 받고 다음 명령을 진행하기 위해 사용합니다.
당연히 문자열이라면 엔터까지 포함이 되어 필요없지만 문자열이 아니라면, 이 엔터 입력을 받기 위한 작업이라고 이해하시면 될 것 같습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
chlqhal0420님의 질문에 대해, input.nextLine()
의 역할, 특히 input.nextInt()
와 input.nextLine()
을 같이 사용할 때 왜 input.nextLine()
이 추가로 필요한지에 대한 설명이 필요해 보입니다.
Java에서 Scanner
객체의 nextInt()
메서드를 사용하면 정수를 입력받은 후 엔터키(개행문자)가 입력 버퍼에 남게 됩니다. 그래서 바로 다음에 nextLine()
을 호출할 때, 이 남아있는 엔터키(개행문자)를 입력으로 인식하고 넘어가, 사용자가 문자열을 입력할 기회 없이 다음 코드로 넘어가버리는 문제가 발생합니다. 따라서, nextInt()
메서드 뒤에 nextLine()
을 한 번 더 호출하여 이렇게 입력 버퍼에 남은 엔터키(개행문자)를 소비하는 용도로 사용합니다. 이렇게 함으로써, 사용자로부터 의도한 문자열 입력을 제대로 받을 수 있습니다.
질문하신 상황에서 input.nextLine()
이 필요한 이유는 바로 이러한 입력 버퍼를 비우는 작업 때문입니다. 사용자가 입력한 정수값 다음에 입력하는 문자열값(상품명
)을 정확하게 받기 위해서 사용됩니다.
이 문제에 대한 구체적 예시와 설명이 들어있는 유사한 답변 링크는 다음과 같습니다:
“nextInt() 후 nextLine() 사용하기” 문제에 대한 설명에서는 nextInt()
사용 후 nextLine()
을 호출해야 하는 이유와 그 해결방법에 대해 설명하고 있습니다.
“scanner 문제와 풀이 첫 번째 문제 질문”에서도 유사하게 nextInt()
다음 nextLine()
을 사용할 때 발생하는 문제점을 해결하는 방안이 제시되고 있습니다.
chlqhal0420님의 경우, input.nextInt();
를 사용한 뒤, 정수 입력 받고 난 후에 남은 엔터키를 소비하기 위해 input.nextLine();
을 추가로 사용해야 하는 것입니다. 이 로직은 사용자로부터 문자열 입력을 받기 전에 항상 필요한 절차입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.