-
Java EOF 처리 :: 마이구미Java 2017. 10. 22. 15:11반응형
이 글은 Java에서 EOF(End of File) 처리에 대해 다뤄본다.
알고리즘 문제 풀이에 대한 기준임을 참고바란다.
Java에서 사용되는 입력 클래스에 대한 기본 지식이 필요하다.
Java 입력 클래스 - http://mygumi.tistory.com/78
컴퓨팅에서, 파일 끝(End of File, EOF[1])는 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음을 나타낸다.
알고리즘 문제를 접해본 적이 있다면, 입력 부분의 기준이 없는 문제를 접해본 적이 있을 것이다.
예를 들어, 다음과 같은 문제가 된다. https://www.acmicpc.net/problem/5639
입력 클래스는 2가지인 Scanner, BufferedReader로 구성된다.
각각의 EOF 처리 방법은 다음과 같다.
Scanner 클래스
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()) {
sc.nextLine();
}
while(sc.hasNextInt()) {
sc.nextInt();
}
BufferedReader 클래스
BufferedReader br = new BufferedReader(new InputStreamReader(System.in);
String input = "";
while((input = br.readLine()) != null) {
//......
}
Scanner 클래스의 경우는 타입에 따른 입력으로 편의를 제공하지만, BufferedReader 보다 속도가 느리다.
간혹 StringTokenizer로 EOF를 처리하는 시도를 볼 수 있다.
비슷한 메소드인 hasMoreTokens 의 존재로 인해 오해할 수 있다.
StringTokenizer은 문자열을 입력하는 것이 아닌 입력 받은 문자열을 가공하는 역할을 한다.
단순히 가공한 문자열 자체에서 원하는 행위를 하기 때문에, EOF를 처리한다고 보기는 어렵다.
반응형'Java' 카테고리의 다른 글
추상 클래스 vs 인터페이스 :: 마이구미 (6) 2017.11.25 정적 메소드는 언제 써야하는가? :: 마이구미 (6) 2017.11.17 Java 객체 지향 프로그래밍 개념 :: 마이구미 (0) 2017.02.14 JVM 어떻게 동작하는가? :: 마이구미 (2) 2017.02.02 atomic vs volatile vs synchronized :: 마이구미 (1) 2017.01.29