너굴 개발 일지

[Java] EOF(End of File) 처리 본문

Java

[Java] EOF(End of File) 처리

너굴냥 2021. 9. 7. 15:59

EOF란 컴퓨팅에서 파일의 끝(End of FIle)을 나타내며 데이터 소스로부터 더이상 읽을 수 있는 데이터가 없음을 나타냅니다.

자바에서는 대표적인 입력 클래스로 Scannner, 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) {
	//......
}

 

 

[관련 예시]

https://www.acmicpc.net/problem/10951

 

10951번: A+B - 4

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

* 입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

* 출력

각 테스트 케이스마다 A+B를 출력한다.

 

 

* 풀이

해당 문제는 입력받을 테스트 케이스의 개수와 종료 조건이 명시되지 않았기에 프로그램에서 파일의 끝을 만났음을 알리기 위해 매크로로 정의된 EOF 값을 리턴해야 합니다.

import java.io.*;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws IOException {

        Scanner s = new Scanner(System.in);

        while(s.hasNextInt()){
            int A = s.nextInt();
            int B = s.nextInt();
            System.out.println(A+B);
        }
    }
}