EOF : End of File
파일의 끝, 더 이상 읽을 수 있는 데이터가 없음
알고리즘 문제에서 입력 데이터를 얼마나 받을지 명시하지 않을 경우 EOF를 사용한다.
입력 받을 때 Scanner, BufferedReader 두가지 방식을 사용하는데, 각각의 EOF처리방법을 알아야한다.
1. Scanner 클래스를 이용한 EOF 처리
Scanner 클래스에서의 EOF는 hasNext() 메소드를 사용한다.
입력된 데이터가 있으면 true, 데이터가 없으면 false를 반환하는 것을 이용한다.
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
//수행할 작업
}
hasNext()에는 hasNextLine(), hasNextInt() 같은 입력데이터가 들어올 수도 있다.
핵심은 입력데이터를 받으면 EOF를 체크하고 EOF인 경우에는 hasNext()가 false가 되어 반복문을 빠져나오는 것이다.
2. BufferedReader 클래스를 이용한 EOF 처리
BufferedReader는 Scanner와 달리 EOF를 처리하는 함수는 없기때문에 null을 이용한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = "";
while((input = br.readLine()) != null) {
//수행할 작업
}
데이터가 입력이 되는 동안 (null이 아닐 때) 작업을 수행하고,
데이터가 입력되지않으면 null이 저장되어 반복문을 빠져나오면서 EOF 처리가 된다.
br.readLine()으로 입력값이 없을 때 까지 계속 입력값을 읽는 작업을 하는 것이다.
'Language > JAVA' 카테고리의 다른 글
코딩 컨벤션 - Java (0) | 2022.12.27 |
---|---|
자바 : 변수, 명명규칙 / 변수 타입 (기본형, 참조형) / 멤버변수(클래스변수, 인스턴스변수), 지역변수 (0) | 2022.06.01 |
자바 : 상수 / 리터럴(literal) / 리터럴 타입 (0) | 2022.05.20 |
자바 : 문자열 전부 대문자 or 소문자로 변환 (toLowerCase , toUpperCase) (0) | 2022.05.20 |
자바 : 객체지향 프로그래밍, 객체지향언어 / 클래스, 인스턴스, 객체, 메서드 (0) | 2022.05.19 |