EOF란 End of File로 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음을 나타내는 용어다.
입력 값을 얼만큼 받는지 명시하지 않는 알고리즘 문제를 푸는 경우 EOF를 사용하게 된다.
Scanner의 경우
= hasNext()를 사용
Scanner scan = new Scanner(System.in);
while(scan.hasNext()) {
System.out.println(scan.nextLine());
}
BufferedReader의 경우
EOF를 처리하는 내장 함수가 없기 때문에 아래와 같이 처리하게된다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";
/*1번째 방법 : 입력 자체가 파일인 경우 정상적으로 작동하지만
* IDE에서는 EOF를 찾지 못해 프로그램이 끝나지 않는다
*/
while((str = br.readLine()) != null) {
}
/* 2번째 방법 : 1번째 방법에 더해 입력 끝에 enter를 한 번 더 입력하면
* 그 입력을 EOF로 판별해서 처리한다
*/
while((str = br.readLine()) != null && str.isEmpty()) {
}
/* 3번째 방법 : IDE에서는 enter로 EOF를 찾을 수 있지만
* 입력 자체가 파일로 들어온다면 런타임에러가 뜬다 (읽을 라인이 없는데 읽은 후에 equals()를 수행하기 때문)
*/
while((str = br.readLine()).equals("")) {
}
'연습_알고리즘' 카테고리의 다른 글
[백준 알고리즘] 1차원 배열 10807번 (0) | 2022.10.28 |
---|---|
자바 StringBuilder 사용과 사용 이유 (0) | 2022.10.27 |
[자바 입출력] BufferedReader/ BufferedWriter (1) | 2022.09.16 |
[백준 알고리즘] 반복문 (0) | 2022.09.15 |
[백준 알고리즘] 조건문 (0) | 2022.09.15 |