300x250
https://www.acmicpc.net/problem/10951
문제
분석
입력은 여러 개의 테스트 케이스로 이루어져 있다.
끝맺음 구간이 보이지 않는다. 그러기에 EOF 처리를 해주어야 한다
A와 B가 주어짐.
EOF(End of File)
문제에 입력이 끝나는 지점, 조건이 없습니다. 파일에 끝에서 입력받을 데이터가 없으면
알아서 종료 시키는 것을 EOF 처리라고 합니다.
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()) {
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a+b);
}
}
}
while문의 조건에 EOF 처리를 위해 Scanner의 메소드의 hasNext() 로 처리해줍니다.
hasNext() 메서드는 Boolean 값을 통해 다음 줄이 없으면 false을 반환하고 EOF의 끝을 알려 줍니다.
조건물을 걸어 예외를 발생시켜 종료시켜야 하지만,(엔터나 공백) , hasNext()의 경우 입력하는게 없을 때 예외가 던져지는 것이 아니기 때문에 반복문을 종료시키려면 입력때 ctrl + z 나 ctrl + D 로 EOF 처리 해주고 종료 해주면 된다.
풀이 2
try - catch 문의로 예외처리
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
try {
StringTokenizer st; // 문자열 분리
String str = "";
while((str=br.readLine()) != null) { // readLine() 을 통해 str에 저장된 데이터가
st = new StringTokenizer(str); // null 일 경우 반복문 종료
if(st.hasMoreTokens()) {
bw.write(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()) + "\n");
}else {
break;
}
}
br.close();
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
BufferedReadr는 readLine() 메서드를 통해 null 을 반환한다.
null 을 반환 하기 위해 ctrl + z 나 ctrl + D 로 EOF 처리 해주면 된다.
300x250
'Progamming > BAEK JOON > 백준의 알고리즘' 카테고리의 다른 글
[백준] 10871번 : X보다 작은 수 - JAVA 배열 (0) | 2023.03.07 |
---|---|
[백준] 10807번 : 개수 세기 - JAVA 배열 (0) | 2023.03.06 |
[백준] 10952번 : A+B - 5 - JAVA (0) | 2023.03.03 |
[백준] 2439번 : 별찍기 - 2 - JAVA (0) | 2023.03.02 |
[백준] 2438번 : 별 찍기 - 1 - JAVA (4) | 2023.03.02 |