https://www.acmicpc.net/problem/10951
위와 같이 숫자를 입력받아, 계산을 하는 문제이다.
딱 보았을때 쉽다고 느꼈다. 코드를 작성하려고 했는데 2가지 문제에 걸렸다.
1. 몇 개의 케이스를 입력해야하는가?
2. 언제 프로그램이 종료 되는가?
만약 더해야하는 것의 갯수가 정해져 있다면 for문을 이용하면 될 텐데,
위의 문제는 케이스가 정해져 있지 않았다.
그렇다면 while문을 이용해야 하는데, while()의 안의 조건문에 어떤 조건을 넣어야 되는 것일까.
어떻게 구현을 할 지 몰라 검색을 해보았다.
https://st-lab.tistory.com/40
위 블로그의 글을 바탕으로 예외처리 방법에 대해 알아보았다.
이 문제에서 가장 중요한 점이 파일 종료 조건이 없이 그냥 입력이 주어졌다는 것이다.
즉 입력에서 더 이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하라는 것이다.
이렇게 데이터가 더 이상 존재하지 않을 때 우리는 EOF(End of File) 즉, 파일의 끝이라 한다.
Scanner를 통해 코드를 작성할 경우 EOF처리 방법은
1. try-catch문으로 예외 발생시 반복문을 종료시켜주도록 한다.
2. Scanner 의 메소드인 hasNext(), hasNextInt()를 통해 처리한다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNextInt()){
int a = scan.nextInt();
int b = scan.nextInt();
System.out.println(a+b);
}
scan.close();
}
}