백준 10951번을 풀면서 이클립스에서는 NoSuchElementException 오류가 발생했지만 백준에서는 통과가 되는 일이 있었다. 이 일을 계기고 EOF처리에 대해 글로 작성해보고자 한다.
EOF
- 파일의 끝, 데이터 소스에서 더 이상 읽을 수 있는 데이터가 없다는 것을 의미한다.
EOF 처리 방식에는 Scanner 와 BufferedReader가 있다.
Scanner
작성 예시
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
sc.next();
}
while(sc.hasNext()) {
sc.nextLine();
}
}
}
BufferedReader
작성예시
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String a ="";
while((a=br.readLine())==null) { //입력이 끝이 난다면
}
//입력이 끝이 난다면 && 입력 후 enter를 치면 한번더 입력 받은 그 값의 유무를 통해 EOF판별
while((a=br.readLine())==null && !a.isEmpty()) {
}
}
}
백준은 입력이 파일로 들어오기 때문에 입력의 끝을 확인할 수 있지만 이클립스 같은 IDE에서는 입력의 끝을 알 수 없어
EOF를 인식하지 못한다. 그래서 !a.isEmpty를 통해 EOF를 처리할 수 있도록 할 수 있다.
'JAVA' 카테고리의 다른 글
[JAVA(자바)] 리터럴이란? (0) | 2022.12.19 |
---|---|
[JAVA(자바)] 변수와 자료형 (0) | 2022.12.19 |
[JAVA(자바)] 반올림해서 소수점 원하는 자리까지 출력하기 (0) | 2022.12.01 |
[JAVA(자바)] BufferedWriter와 StringBuilder 차이 (0) | 2022.11.30 |
[JAVA(자바)] Scanner 와 BufferedReader 차이 (0) | 2022.11.27 |
댓글