본문 바로가기
IT/Data

EOF, 더 이상 읽을 수 없는 데이터

by Cyber_ 2024. 11. 16.

백준 10951번을 풀며 입력 값이 더 이상 없을 때 처리하는 방법을 고민하며 EOF라는 것을 알게 되었다.

EOF

EOF란 End Of File의 약어로서 입력에서 더이상 읽을 수 없는 상황이며 이 때 반복문을 종료해야한다.

Scanner와 BufferedReader를 활용한 두가지 해결방법이 있다.

Scanner

Scanner의 경우 EOF가 발생했을 때 NoSuchElementEception 오류가 발생한다.

아래와 같이 hasNextInt 또는 hasNext 메서드를 사용하면 EOF에 대처할 수 있다.

import java.util.Scanner;

public class Main {
    public static void main(String args[]){

        Scanner in=new Scanner(System.in);

        while(in.hasNextInt()){

            int a=in.nextInt();
            int b=in.nextInt();
            System.out.println(a+b);

        }    
        in.close();
    }
}

BufferedReader

BufferedReader를 사용하여 EOF가 발생할 경우 null이 반환된다.

그러므로 null이 발생할 경우 반복부니 종료되도록 설계한다면 해결이 된다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        String str;

        while( (str=br.readLine()) != null ){

            int a = str.charAt(0) - 48;
            int b = str.charAt(2) - 48;
            sb.append(a+b).append("\n");

        }
        System.out.print(sb);
    }
}

Reference

https://st-lab.tistory.com/40