[Java] EOF: End of File

yammmie·2024년 9월 15일

Java

목록 보기
8/9
post-thumbnail

상황

백준 알고리즘 10951번 문제를 풀다가 해당 문제의 핵심인 EOF에 대해 알아보았다



EOF

  • End of File: 파일의 끝
  • 데이터 소스로부터 더 이상 읽을 데이터가 존재하지 않은 경우를 의미

EOF 처리 방법 1: Scanner 사용 시

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
    	Scanner scan = new Scanner("");
        
        while(true) {
        	int i = scan.nextInt();
            
            System.out.println(i);
        }
    }
}
  • 위와 같이 Scanner에 읽을 데이터가 없으면 NoSuchElementException 발생
  • 보통 2번 방법을 많이 사용
  1. try-catch문으로 예외 발생 시 반복문 종료 처리
  2. Scanner의 메소드 hasNext() 사용

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
    	Scanner scan = new Scanner(System.in);
        
        while(scan.hasNext()) {
            
        }
    }
}
  • 다음 요소가 있는지 확인하는 hasNext() 메소드를 사용해 읽을 데이터가 있는 경우에만 반복문 처리
  • 주의할 점: 키보드로 입력받는 System.in의 경우, EnterSpace는 입력 예외를 발생시키지 않기 때문에 hasNextInt()를 작성하고 문자열을 입력해 InputMisMatchException을 발생시키거나 EOF를 입력해야 함
    • 윈도우: Ctrl + Z
    • 맥북이나 인텔리제이: Ctrl + D

EOF 처리 방법 2: BufferedReader 사용 시

import java.io.BufferedReader;

public class Main {
	public static void main(String[] args) {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        
        while((str = br.readLine()) != null) {
            
        }
    }
}
  • BufferedReader의 경우 null을 리턴하기 때문에 조건문을 통해 null 여부 확인



0개의 댓글