inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

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

249

chlqhal0420

작성한 질문수 1

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(); 의 역할에 대해 알려주시면 감사하겠습니다^^

 

java 객체지향

답변 2

0

OMG

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

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

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

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

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

3(입력) + 엔터

=> 다음 프로세스 진행

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

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

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

 

감사합니다.

0

인프런 AI 인턴

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

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

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

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

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

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

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

문제와 풀이4 문제점

0

45

2

문제풀이 시간마다 방향성

0

43

2

피라미드 문제 풀이

0

73

1

ScannerWhile3 예제 코드 질문

0

57

1

짝수 출력 문제 질문

0

52

1

Array 연습 문제 5번 질문입니다.

0

85

2

단축어가 이상하게 나옵니다

0

133

2

Sql강의

0

91

1

array 문제풀이 2번 질문입니다.

0

57

1

JAVA입문 / 메서드편 문제와 풀이2

0

48

1

인텔리제이 무료버젼이 통합되었다는데 30일 무료버전이면 어떻게 사용하나요

1

811

3

OperationEx3에서 꼭 boolean을 써야 하나요?

0

62

1

for, while문 작성

0

66

1

68강 ArrayEx6 클래스 질문

0

61

1

IO.println(String.format("Hello and welcome!"));

0

151

2

소스코드 실행이 안돼요

0

120

2

메서드 문제와 풀이2에서 마지막 문제 이렇게 풀어도 괜찮은 건가요..?

0

80

1

While과 for 스코프 질문

0

64

1

김영한 java 입문 설치 질문

0

139

2

버퍼문제?

0

55

1

for문 피라미드 찍는거 질문

0

79

1

21버전이 없고, 강의 메뉴얼 확인해보면 된다는 김영한 선생님 답변 확인했습니다.

0

376

1

3번 문제 질문 있습니다.

0

100

2

sout에는 변수가 하나만 들어가야 하나요?

0

135

1