EOF란?
End Of File, 즉 파일의 끝으로, 더 이상 읽을 수 있는 데이터가 존재하지 않는 것를 말한다.
이를 처리하는 방법은 입력의 종류에 따라 있으며, 그 중 Scanner와 BufferedReader의 처리 방법에 대해 설명할 것이다.
1️⃣ Scanner 사용
아래와 같이 int 타입을 받을 때, hasNextInt() 메소드를 사용해서 처리할 수 있다.
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
System.out.println(sc.nextInt());
}
sc.close();
}
}
IDE나 터미널에서는 공백(" ")을 받거나 Enter(\n)를 쳐도 반복문이 종료되지 않는다. 즉, 데이터로 받아들인다는 말이다.
따라서 반복문을 종료시키기 위해 아래의 두 가지 방법으로 hasNextInt()에 EOF를 입력할 수 있다.
- int 타입이 아닌 문자열 등의 다른 타입을 입력
- 윈도우의 경우 ctrl + Z, 리눅스 계열의 경우 ctrl + D 입력
2️⃣ BufferedReader 사용
BufferedReader의 경우 null을 반환한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while ((str = br.readLine()) != null) {
...
}
br.close();
}
}
IDE나 터미널에서 BufferedReader로 null을 반환하기 위해서는 Scanner와 같이 EOF를 받아야 하기 때문에 윈도우의 경우 ctrl + Z, 리눅스 계열의 경우 ctrl + D 를 입력해야 한다.
더 알아보기
백준 10951번 A+B - 4
https://www.acmicpc.net/problem/10951
🔗 참고자료
'Language > JAVA' 카테고리의 다른 글
| [Java] Integer Overflow(정수형 오버플로우) (0) | 2025.03.15 |
|---|---|
| [Java] Scanner vs BufferedReader (0) | 2025.03.09 |
| [JAVA] JDK 삭제하기 (0) | 2025.01.14 |
