본문 바로가기
JAVA

[JAVA(자바)] EOF(End Of File)

by 초이사 2022. 11. 30.

백준 10951번을 풀면서 이클립스에서는 NoSuchElementException 오류가 발생했지만 백준에서는 통과가 되는 일이 있었다. 이 일을 계기고 EOF처리에 대해 글로 작성해보고자 한다.

 

EOF 

  • 파일의 끝, 데이터 소스에서 더 이상 읽을 수 있는 데이터가 없다는 것을 의미한다.

 

EOF 처리 방식에는 Scanner 와 BufferedReader가 있다.

 

 

Scanner

작성 예시

import java.util.*;

public class Main {

	public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner(System.in);
		
		while(sc.hasNext()) { 
			sc.next();
		}
		
		while(sc.hasNext()) { 
			sc.nextLine();
		}
	}
}

 

 

BufferedReader

작성예시

import java.io.*;

public class Main {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String a ="";
		
		while((a=br.readLine())==null) { //입력이 끝이 난다면
		}
		
		//입력이 끝이 난다면 && 입력 후 enter를 치면 한번더 입력 받은 그 값의 유무를 통해 EOF판별
		while((a=br.readLine())==null && !a.isEmpty()) { 
		}
		
	}
}

 

백준은 입력이 파일로 들어오기 때문에 입력의 끝을 확인할 수 있지만 이클립스 같은 IDE에서는 입력의 끝을 알 수 없어

EOF를 인식하지 못한다. 그래서 !a.isEmpty를 통해 EOF를 처리할 수 있도록 할 수 있다.

댓글