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(); // 다음 줄 읽기
이렇게 각 메서드의 차이점을 이해하고 상황에 맞게 사용하면 입력 처리를 효과적으로 할 수 있습니다.
'기초 알고리즘' 카테고리의 다른 글
BFS 기본코드 인접 배열 방식, 인접 리스트 방식 (0) | 2024.09.13 |
---|---|
DFS 기본 코드 인접 배열 방식, 인접 리스트 방식 (0) | 2024.09.13 |
인덱스 바꾸기 - 자바 (1) | 2023.12.15 |
구슬을 나누는 경우의 수 구하기 - bigInteger 사용하기 (0) | 2023.12.01 |
특정 문자 제거하기 (0) | 2023.11.15 |