EOF : End of File

파일의 끝, 더 이상 읽을 수 있는 데이터가 없음

알고리즘 문제에서 입력 데이터를 얼마나 받을지 명시하지 않을 경우 EOF를 사용한다.

입력 받을 때 Scanner, BufferedReader 두가지 방식을 사용하는데, 각각의 EOF처리방법을 알아야한다.

 

 

1. Scanner 클래스를 이용한 EOF 처리

Scanner 클래스에서의 EOF는 hasNext() 메소드를 사용한다.

입력된 데이터가 있으면 true, 데이터가 없으면 false를 반환하는 것을 이용한다.

 

Scanner sc = new Scanner(System.in);

while(sc.hasNext()) {
//수행할 작업
}

hasNext()에는 hasNextLine(), hasNextInt() 같은 입력데이터가 들어올 수도 있다.

핵심은 입력데이터를 받으면 EOF를 체크하고 EOF인 경우에는 hasNext()가 false가 되어 반복문을 빠져나오는 것이다.

 

 

 

 

2. BufferedReader 클래스를 이용한 EOF 처리

BufferedReader는 Scanner와 달리 EOF를 처리하는 함수는 없기때문에 null을 이용한다.

 

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = "";

while((input = br.readLine()) != null) {
//수행할 작업
}

데이터가 입력이 되는 동안 (null이 아닐 때) 작업을 수행하고,

데이터가 입력되지않으면 null이 저장되어 반복문을 빠져나오면서 EOF 처리가 된다. 

br.readLine()으로 입력값이 없을 때 까지 계속 입력값을 읽는 작업을 하는 것이다.