JAVA
[JAVA] next(), nextLine(), nextInt()의 차이점과 주의할 점
Alex Han
2025. 3. 24. 04:12
반응형
Scanner 주요 메서드 차이 총정리
메서드 | 설명 | 입력 예시 | 입력 처리 결과 |
next() | 공백 전까지 한 단어 읽음 | "Hello World" | Hello (공백 전까지 읽고, 나머지는 버퍼에 남음) |
nextLine() | 엔터까지 한 줄 전체 읽음 | "Hello World" | Hello World (공백 포함, 엔터까지 모두 읽음) |
nextInt() | 정수 하나 읽음 | 123 | 123 숫자 저장, 엔터 안 먹음 |
1. next()
• 공백(space), 탭, 엔터 기준으로 다음 단어까지만 읽음.
Scanner sc = new Scanner(System.in);
String s = sc.next();
System.out.println(s);
입력: Hello World
출력: Hello
→ World는 입력 버퍼에 남아있음.
2. nextLine()
• 엔터 칠 때까지 전체 한 줄 다 읽음 (공백 포함)
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
System.out.println(s);
입력: Hello World
출력: Hello World
3. nextInt()
• 정수 하나만 읽음
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
System.out.println(num);
입력: 123
출력: 123
⚠️ 주의: 엔터는 안 읽음!
그래서 바로 뒤에 nextLine() 쓰면 엔터가 그대로 남아있어서 빈 문자열이 들어가는 문제 발생!
🛑 중요한 함정: nextInt() → nextLine() 문제
Scanner sc = new Scanner(System.in);
int num = sc.nextInt(); // 123 입력
String str = sc.nextLine();
System.out.println("String: " + str);
입력:
123 (엔터)
출력:
String:
왜냐면:
• nextInt()가 숫자 읽고 엔터는 안 먹음
• 그 엔터가 nextLine()에 넘어가서 빈 문자열로 처리됨
🟢 해결법
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.nextLine(); // 엔터 처리!
String str = sc.nextLine();
✅ 정리 요약
메서드 | 언제 쓰나 | 주의할 점 |
next() | 단어 단위 입력 | 공백 기준, 엔터 전까지만 |
nextLine() | 한 줄 전체 입력 | 앞에 nextInt() 등 쓰면 엔터 문제 발생 |
nextInt() | 정수 입력 | 엔터 안 먹음 → nextLine() 전에 처리 필요 |
📣 실전 팁
• 문자, 숫자 혼합 입력 처리 → nextLine() 사용 후, 파싱하는 게 깔끔할 때가 많음
• 백준, 프로그래머스에서 입력 처리 → BufferedReader도 함께 공부해두면 좋음 (속도 빠름)
반응형