작성
·
78
0
문제와 풀이3-상품 가격 계산
위 문제 질문드립니다.
가격과 수량을 입력받을때, 사용자 입력이 "정수+개행문자"까지 들어가니까
앞선 문제에서 알려주셨다시피
nextInt함수는
정수값만 입력으로 가져가기 때문에
사용자입력에서 개행문자가 남아 빈문자가 다음 입력값으로 넘어가는 것을 방지하기 위해
아래 캡쳐와 같이 scanner.nextLine(); 코드를 넣어주어
개행문자를 없애줘야 하지 않나요?
답변 부탁드립니다.
System.out.print("가격은?(-1입력 시 종료): ");
int price = scanner.nextInt();
scanner.nextLine();
if(price==-1){
System.out.println("시스템 종료");
break;
}
System.out.print("수량은?: ");
int num = scanner.nextInt();
scanner.nextLine();
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
루피형에이스님께서 질문하신 대로 nextInt()
메서드는 사용자가 입력한 정수만 가져가며, 개행 문자(엔터)를 입력 버퍼에 남겨두는 특성이 있습니다. 이로 인해 nextInt()
후 nextLine()
메서드를 사용하여 입력 버퍼를 비우지 않을 경우, 다음 nextLine()
호출 시 남아 있는 개행문자를 읽기 때문에 의도한 대로 작동하지 않을 수 있습니다.
사용 예시에서는 가격과 수량을 입력 받은 후 scanner.nextLine();
을 호출하여 입력 버퍼를 비워주는 것이 적절합니다. 이로 인해 버퍼에 남아 있는 개행 문자(엔터)가 다음 입력으로 들어가서 발생할 수 있는 문제를 방지할 수 있습니다.
문제 상황을 방지하고자 코드에 scanner.nextLine();
을 추가한 것은 정확한 접근법입니다. 아래 코드는 이를 반영한 예시 코드입니다:
System.out.print("가격은?(-1입력 시 종료): ");
int price = scanner.nextInt();
scanner.nextLine(); // 개행문자 제거
if(price == -1){
System.out.println("시스템 종료");
break;
}
System.out.print("수량은?: ");
int num = scanner.nextInt();
scanner.nextLine(); // 개행문자 제거
해당 설정이 올바르게 적용되었으며, 사용자의 예상 입력 처리를 방해하지 않도록 구성된 코드는 다음 nextLine()
이 예상대로 사용자 입력을 가져오게 보장합니다.
유사한 문제를 겪으신 사례들에 대한 더 자세한 설명과 해결법을 아래 유사한 질문에서 찾아보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.