백준 10951번을 풀며 입력 값이 더 이상 없을 때 처리하는 방법을 고민하며 EOF라는 것을 알게 되었다.
EOF
EOF란 End Of File의 약어로서 입력에서 더이상 읽을 수 없는 상황이며 이 때 반복문을 종료해야한다.
Scanner와 BufferedReader를 활용한 두가지 해결방법이 있다.
Scanner
Scanner의 경우 EOF가 발생했을 때 NoSuchElementEception 오류가 발생한다.
아래와 같이 hasNextInt 또는 hasNext 메서드를 사용하면 EOF에 대처할 수 있다.
import java.util.Scanner;
public class Main {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
while(in.hasNextInt()){
int a=in.nextInt();
int b=in.nextInt();
System.out.println(a+b);
}
in.close();
}
}
BufferedReader
BufferedReader를 사용하여 EOF가 발생할 경우 null이 반환된다.
그러므로 null이 발생할 경우 반복부니 종료되도록 설계한다면 해결이 된다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str;
while( (str=br.readLine()) != null ){
int a = str.charAt(0) - 48;
int b = str.charAt(2) - 48;
sb.append(a+b).append("\n");
}
System.out.print(sb);
}
}
Reference
'IT > Data' 카테고리의 다른 글
쿠키와 CORS 정책의 관계: 웹 개발의 핵심 이해 (0) | 2024.04.12 |
---|---|
토큰 기반 인증 시스템 이해하기: 발급, 관리 및 JWT (2) | 2024.04.07 |