본문 바로가기
ONLINE JUDGE/제어문

[백준10951] A+B-4 (EOF)

by W_W_Woody 2022. 2. 4.

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);
	}
}

 


실패 코드
실패 코드 2

백준 알고리즘에서는 데이터를 주는 과정에서 더이상의 데이터를 보내지 않음으로 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

댓글