https://www.acmicpc.net/problem/10951
10951번: A+B - 4
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
이렇게 데이터가 더이상 존재하지 않을 때 우리는 EOF (End of File) 즉, 파일의 끝이라 한다.
방법1. StringTokenizer, Stingbuilder
package step3;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Day13_10951 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
String str;
while( (str=br.readLine()) != null ){
st = new StringTokenizer(str," ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
sb.append(a+b).append("\n");
}
System.out.print(sb);
}
}
방법2. String.charAt()
package step3;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Day13_10951_2 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
//StringTokenizer st;
String str;
while( (str=br.readLine()) != null ){
//st = new StringTokenizer(str," ");
int a = str.charAt(0) - 48;
int b = str.charAt(2) - 48;
sb.append(a+b).append("\n");
}
System.out.print(sb);
}
}
백준 알고리즘에서는 데이터를 주는 과정에서 더이상의 데이터를 보내지 않음으로 NoSuchElementException 을 발생 시킬 수 있다. 그러나 우리가 평상시에 입력받는 방법인 System.in, 즉 키보드로 입력받을 경우 Scanner 는 우리가 흔히 쓰는 Enter, Space 도 입력 예외를 발생시키지 않는다. 쉽게 말하면 데이터로 무언가를 받아들인단 소리다.
그러나 IDE나 터미널에서 우리가 입력을 할 경우 공백이나 엔터를 치더라도 이 또한 입력 이벤트로 데이터가 스트림에 넣어지는 것이기 때문에 예외가 던져지는 것이 아니다.
결국 반복문을 종료시키려면 EOF(End Of File)를 입력해주거나
(윈도우의 경우는 ctrl + Z, 리눅스계열의 경우 ctrl + D),
정수가 아닌 문자열을 입력한다던가 등 다른 타입의 입력을줘야한다.
'ONLINE JUDGE > 제어문' 카테고리의 다른 글
[백준1110] 더하기 사이클 (0) | 2022.02.08 |
---|---|
[백준10952] A+B-5 (0) | 2022.02.02 |
[백준10871] X보다 작은 수 (0) | 2022.02.02 |
[백준15552] 빠른A+B (0) | 2022.02.02 |
[백준11021/11022] A+B-7/A+B-8 (0) | 2022.02.02 |
댓글