본문 바로가기
자바(Java)

자바 코딩테스트를 위한 정리 - 입출력2 (EOF 처리)

by codeyaki 2022. 12. 21.
반응형

EOF란

End of File의 줄임말로 파일의 끝을 뜻합니다.

알고리즘 테스트에선 일반적으로 테스트 케이스의 수를 따로 명시해주지 않고 입력을 가변적으로 받을때 사용하게 됩니다.

예로 '4375번 문제 (문제 제목: 1)'이 있습니다.

이와 같이 문제에서 테스트케이스의 개수 혹은 끝을 명시해주지 않을때 어떻게 처리해야하는지 알아보도록 하겠습니다.

자바의 대표적인 두가지 입력 클래스인 아래 2가지 기준으로 설명하겠습니다.

1. Scanner 

2. BufferedReader

 

1. Scanner

Scanner에서 EOF를 처리하는 방법은 hasNext()메소드를 사용해서 처리하는 방법입니다.

해당 메소드는 다음 입력이 있으면 true 없으면 false를 반환합니다. 이를 사용해서 EOF여부를 확인할 수 있습니다.

아래의 예시코드처럼 사용할 수 있습니다.

Scanner scan = new Scanner(System.in);
    while(scan.hasNext()) {
        String line = scan.nextLine();
        // 처리 로직 코드
    }

 

2. BufferedReader

코딩테스트에 있어서는 첫번째의 Scanner보다 두번째 방법인 BufferedReader를 많이 사용하게 됩니다.

하지만 BufferedReader에는 hasNext()와 같은 메소드가 따로 없습니다. 따라서 직접 처리를 해주어야 하는데요. 보통 while문의 조건에서 처리를 합니다.

아래의 예시 코드처럼 작성할 수 있습니다.

String line;
while ((line = bf.readLine()) != null) {
	// 처리 로직 코드
}

좀 더 풀어 작성하면 아래의 예시와 같이 작성할 수 있습니다.

while (true) {
    String line = bf.readLine();
    if (line == null) {
        break;
    }

 

반응형