파이썬과 다르게 자바는 입력문이 조금 다르다 ! 조금 섬세하게 다루어주어야 한다.
Scanner
에서 입력을 받을 때, nextInt()
같은 메서드는 숫자를 입력받고 나면 엔터(\n
)도 남게 되는데, 이 부분을 처리하지 않으면 이후에 문자열을 입력받을 때 문제가 생길 수 있다.
📌 개행 문자(\n)를 남기는 주요 메서드
다음 메서드들은 공백(스페이스, 개행 등)을 기준으로 데이터를 가져가고 \n
을 남깁니다!
메서드 | 설명 |
---|---|
nextInt() |
정수 입력 후 개행 문자(\n) 남김 |
nextDouble() |
실수 입력 후 개행 문자(\n) 남김 |
nextFloat() |
float 입력 후 개행 문자(\n) 남김 |
nextLong() |
long 입력 후 개행 문자(\n) 남김 |
nextShort() |
short 입력 후 개행 문자(\n) 남김 |
nextBoolean() |
Boolean 입력 후 개행 문자(\n) 남김 |
next() |
공백 전까지만 문자열 입력 (\n 남김) |
next() |
공백 전까지만 문자열 입력 (\n 남김) |
📌 개행 문자(\n)를 남기지 않는 메서드
이 메서드들은 입력의 끝까지 읽어버리기 때문에 \n
이 남지 않습니다!
메서드 | 설명 |
---|---|
nextLine() |
한 줄 전체를 읽어버림! (\n 포함) |
📌 next()
VS nextLine()
의 차이점
"안녕하세요, 반갑습니다. \n"
라는 문장이 있을 때,
next()
를 사용하면 안녕하세요,
만 읽어온다.
nextLine()
을 입력하면 안녕하세요, 반갑습니다.
까지 읽어온다.
📌 사용방법
그래서, nextLine 이 아니라면 버퍼를 제거하고 사용하자 !
// Int 받아오기
Int num = sc.nextInt()
// 버퍼 제거
sc.nextLine()
// 그런 후 String 입력 받기
String text = sc.nextLine()
📌 왜 둘의 출력이 같냐?
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
System.out.print(num1+ " , ");
System.out.println(num2);
// ➡ 2 , 3
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
nextLine() // 버퍼 제거
int num2 = sc.nextInt();
System.out.print(num1+ " , ");
System.out.println(num2);
// ➡ 2 , 3
nextInt()는 공백이나 줄바꿈 문자를 무시하고, 숫자만 처리한다.
두 번째 코드에서는 nextLine() 없이도 nextInt()가 두 번째 숫자를 정상적으로 받아오므로 두 코드는 동일한 결과를 출력한다.
'코딩 공부 > Java' 카테고리의 다른 글
[Java] Chpater 3 - 05) 람다(Lambda) (0) | 2025.02.26 |
---|---|
[Java] Chpater 3 - 04) 제네릭(Generic) (0) | 2025.02.26 |
[Java] Chpater 3 - 03) 컬렉션(Collection) (0) | 2025.02.26 |
[Java] Chpater 3 - 02) Optional - null 을 다루는 법 (0) | 2025.02.26 |
[Java] Chpater 3 - 01) 예외(Exception)과 예외처리(try-catch) (0) | 2025.02.26 |