[백준 4949 문제를 풀면서 알게된 사실]
4949는 데이터를 입력할 때, 몇개를 입력할 것인지 입력부분에 대한 기준이 없었다.
계속해서 런타임에러가 나고, 결국 프로그램이 종료가 되지 않는 것이 문제임을 알게되었다.
프로그램을 종료하기 위해서는 EOF처리가 필요했다.
EOF(End Of File: 파일끝)란?
데이터 소스로부터 더이상 읽을 수 있는 데이터가 없음을 뜻한다.
자바에서는 대표적인 입력클래스인 Scanner와 BufferedReader를 통해 데이터를 입력받는다.
각각 클래스의 EOF처리는 다음과 같다.
Scanner
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine())
{
sc.NextLine();
}
while(sc.hasNextInt())
{
sc.NextInt();
}
BufferedReader
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String input = "";
while( (input = bf.readLine()) != null)
{
}
여기서 중요한점
StringTokenizer의 hasMoreTokens으로 EOF를 처리할 수 없다.
StringTokenizer는 문자열을 입력하는 것이 아닌 "입력받은 문자열을 가공하는 역할"을 한다.
단순히 가공한 문자열 자체에서 원하는 행위를 하기 때문에 EOF를 처리한다고 보기는 어렵다.
출처: https://mygumi.tistory.com/236 [마이구미의 HelloWorld]
'이것저것 알게된 것' 카테고리의 다른 글
카카오페이 공모주 알리미 (0) | 2021.10.25 |
---|---|
srt 10% 할인쿠폰 받기 (0) | 2021.07.02 |
2차원배열 특정값으로 채우기 (0) | 2019.08.02 |
char형 연산 (0) | 2019.07.20 |
비트연산자 (0) | 2019.07.20 |