백준 알고리즘 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 발생try-catch문으로 예외 발생 시 반복문 종료 처리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의 경우, Enter와 Space는 입력 예외를 발생시키지 않기 때문에 hasNextInt()를 작성하고 문자열을 입력해 InputMisMatchException을 발생시키거나 EOF를 입력해야 함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 여부 확인