카테고리 없음

[Java] 자바의 EOF(End Of File)

진진브레드 2024. 9. 2. 21:00

 

알고리즘을 풀다보면

가끔 입력값의 개수가 정해지지 않은 문제들이 있다.

백준의 5639번 이나 10951번을 예로 들 수 있겠다.

 

해당 문제는 BufferedReader로 사용자의 입력을 계속 받다가,

입력 마지막에 개행 문자를 입력하여 빈 문자열을 출력하고, (개행 문자를 입력한다고, null 을 반환하는 게 아니다.)

그 이후 스트림은 끝에 도달하게 돼(더이상 읽을 데이터가 없다는 의미) null 을 반환한다.

 

https://docs.oracle.com/javase/8/docs/api/index.html

자바 공식 문서를 보자.

스트림의 끝에 도달하게 되면 null을 반환한다고 쓰여있다.

 

따라서 해당 문제는

아래와 같은 코드로 입력을 처리할 수 있다.

...

    while (true) {

        String str = br.readLine();

		// 스트림의 끝에 도달하면 readLine은 null을 반환한다.
        // 혹여, str을 숫자형으로 변환하는 경우, isEmpty로 NumberFormatException 을 방지한다.
        if (str == null || str.isEmpty()) {
        	break;
        }

        ...
    }

...