[Java] EOF 처리하기

Rae-eun Yang·2022년 3월 4일
1

Java

목록 보기
1/2

백준 문제를 풀다보면 입력이 끝날때까지 입력을 받거나, 0이 입력될때까지 입력을 받거나 하는 문제가 여러 개 보인다.
이런 EOF 처리 부분에서 자꾸 에러가 나는데 최근에는 NullpointerError 원인 찾느라 고생 좀 했다.


1. BufferedReader 사용시

Scanner보다는 BufferedReader를 사용했을때 속도가 훨씬 빠르기 때문에 입력을 받을때는 거의 모든 문제에서 BufferedReader를 사용하는 편이다.


  • != 사용

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";

while( (str = br.readLine()) != null) { ... }

다음은 != 로 EOF를 처리한 코드이다.

사실 java에서 문자열을 비교할 때, ==는 되도록이면 쓰지 않는 것이 좋다.

해당 문자열이 null인지 비교할때는 괜찮을지 몰라도 문자열이 null이 아닌 0일때까지 입력을 받는다거나 한다면 틀린 결과값이 나올 가능성이 있다.
이유 : java 문자열 비교 참고


  • equals() 사용

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";

while( !(str = br.readLine()).equals("")) { ... }

다음은 equals() 로 EOF를 처리한 코드이다.

이 방법으로 최근 문제를 해결했다.
이 경우는 파일로 입력받을 경우, 그리고 null이 나올때까지 입력을 받는 경우에는 에러가 나지만 입력을 null이 아닌 특정 문자열이 나올때까지 받는다면 에러가 나지 않는다!

profile
개발자 지망생의 벨로그

0개의 댓글