본문 바로가기
기초 알고리즘

next(), nextLine(), nextInt() 사용법

by leek94 2024. 8. 8.
 

Scanner 클래스의 nextInt(), next(), nextLine() 메서드는 모두 입력을 읽어오는 데 사용되지만, 각 메서드가 처리하는 방식과 반환하는 값에 차이가 있습니다.

1. nextInt()

  • 설명: 정수를 입력받을 때 사용됩니다.
  • 동작 방식: 입력 스트림에서 공백(스페이스, 탭, 엔터 등)으로 구분된 다음 토큰을 읽고 정수로 변환합니다.
  • 반환값: int
  • 예시:
    java
    코드 복사
    Scanner scanner = new Scanner(System.in); int number = scanner.nextInt();
  • 주의점: nextInt()는 정수만 읽고, 그 다음의 공백 문자는 남겨두기 때문에 뒤이어 다른 입력을 읽을 때 예상치 못한 동작이 발생할 수 있습니다.

2. next()

  • 설명: 단어를 입력받을 때 사용됩니다.
  • 동작 방식: 입력 스트림에서 공백(스페이스, 탭, 엔터 등)으로 구분된 다음 토큰을 읽습니다.
  • 반환값: String
  • 예시:
    java
    코드 복사
    Scanner scanner = new Scanner(System.in); String word = scanner.next();
  • 주의점: 공백 문자를 만날 때까지 읽기 때문에, 공백이 포함된 문자열을 읽지 못합니다. 여러 단어를 입력받아야 한다면 반복적으로 사용해야 합니다.

3. nextLine()

  • 설명: 한 줄 전체를 입력받을 때 사용됩니다.
  • 동작 방식: 입력 스트림에서 줄바꿈 문자를 만날 때까지 모든 입력을 읽습니다.
  • 반환값: String
  • 예시:
    java
    코드 복사
    Scanner scanner = new Scanner(System.in); String line = scanner.nextLine();
  • 주의점: 입력 스트림에서 줄바꿈 문자를 만날 때까지 모든 문자를 읽기 때문에, 공백이 포함된 문자열을 읽을 때 유용합니다.

주의점: nextInt()와 nextLine() 혼용 시 문제

nextInt()를 사용한 후 nextLine()을 사용하면, nextInt()가 읽고 남긴 줄바꿈 문자 때문에 nextLine()이 의도치 않게 빈 줄을 읽게 되는 경우가 있습니다. 이를 방지하기 위해 nextInt() 후에 nextLine()을 한 번 호출하여 줄바꿈 문자를 소비해야 합니다.

java
코드 복사
Scanner scanner = new Scanner(System.in); int number = scanner.nextInt(); scanner.nextLine(); // 줄바꿈 문자 소비 String line = scanner.nextLine(); // 다음 줄 읽기

이렇게 각 메서드의 차이점을 이해하고 상황에 맞게 사용하면 입력 처리를 효과적으로 할 수 있습니다.