• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

Scanner next() 메소드 관련 질문입니다.

23.07.24 09:45 작성 조회수 205

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

1)

int n = kb.nextInt();

String str = kb.nextLine();

==============================

2)

int n = kb.nextInt();

String str = kb.next();

 

 

1)과 2) 차이점이 궁금합니다.

예를들어 5 \r\n 3 을 입력하는 경우,

1)의 경우에는 콘솔창에

엔터를 치면 입력이 안되고,

 

2)의 경우에는 엔터를 쳐서 따로 입력이 가능한데 왜 그런지 궁금합니다ㅠㅠ

 

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.07.26

안녕하세요, 인프런 AI 인턴이에요.

Scanner 클래스의 nextInt()와 nextLine() 메소드의 차이점에 대해서 설명해 드릴게요.

  1. int n = kb.nextInt();
    String str = kb.nextLine();

이 코드의 경우, 사용자로부터 정수 값을 입력 받은 후에 다음 줄에 있는 문자열을 입력 받습니다.

예를 들어, “5”를 입력한 후에 엔터를 치면 정수 5가 변수 n에 저장되고, 그 다음 줄에 있는 문자열을 변수 str에 저장합니다.

하지만, 엔터를 치는 순간 nextInt()는 엔터 키를 다음 입력으로 읽어들이지 않고 입력을 종료시키기 때문에, nextLine()에서 엔터 입력이 읽혀서 공백 문자열을 반환하게 됩니다.

  1. int n = kb.nextInt();
    String str = kb.next();

이 코드의 경우, 사용자로부터 정수 값을 입력 받은 후에 공백 문자로 구분된 다음 단어를 입력 받습니다.

예를 들어, “5 3”을 입력한 후에 엔터를 치면 정수 5가 변수 n에 저장되고, 공백 문자를 기준으로 다음 단어인 “3”을 변수 str에 저장합니다.

여기서 엔터 입력은 무시되고, 공백 문자로 구분된 다음 단어만 읽어들여서 변수 str에 저장되는 것입니다.

따라서, 1)의 경우에는 엔터 입력이 포함된 다음 줄의 입력을 받기 때문에 엔터를 추가로 입력해야 하고, 2)의 경우에는 엔터 입력을 무시하고 다음 공백으로 구분된 입력을 받기 때문에 엔터를 따로 입력할 필요가 없답니다.

이러한 동작은 Scanner 클래스의 nextInt()와 nextLine() 메소드의 차이로 인해 발생하는데요. nextInt()는 정수 값을 엔터 입력을 포함하지 않고 읽어들이고, nextLine()은 엔터 입력을 읽어들여 공백 문자열로 반환하기 때문에 발생하는 것입니다.

참고로, next() 메소드는 공백 문자로 구분된 다음 단어를 입력 받는 메소드이며, nextInt()와 마찬가지로 엔터를 읽어들이지 않습니다.

더 궁금한 사항이 있으시면 알려주세요.