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도 함께 공부해두면 좋음 (속도 빠름)

반응형