[Java][BOJ] A+B-4

Ga02·2023년 9월 4일
0

BOJ

목록 보기
57/62

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

각 테스트 케이스마다 A+B를 출력한다.

예제입력1

1 1
2 3
3 4
9 8
5 2

예제출력1

2
5
7
17
7

My Solution

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st;
		String input = "";
		
//		while((input=br.readLine())!=null && !input.isEmpty()) {
//			st = new StringTokenizer(br.readLine());
//			int A = Integer.parseInt(st.nextToken());
//			int B = Integer.parseInt(st.nextToken());
//			sb.append(A+B).append("\n");
//		}
//		System.out.println(sb);
		
		//true로 while문 돌리기
//		while(true) {
//			if((input=br.readLine())==null) break;
//			st = new StringTokenizer(br.readLine());
//			int A = Integer.parseInt(st.nextToken());
//			int B = Integer.parseInt(st.nextToken());
//			sb.append(A+B).append("\n");
//		}
//		System.out.println(sb);
		
		//다른 사람 코드
		while((input=br.readLine())!=null) {
			st = new StringTokenizer(input);
			int A = Integer.parseInt(st.nextToken());
			int B = Integer.parseInt(st.nextToken());
			sb.append(A+B).append("\n");
		}
		System.out.println(sb);
	}

}

👀 Comment

분명 어떻게 하는지 방식은 너무나 아는데도 여러번 실패끝에 결국 다른 사람의 코드를 보고 해결한 문제.

내꺼랑 똑같아 보이는데 내꺼는 런타임 에러가 발생하고 다른 사람의 코드는 왜 되는거지? 하다가 알게된 문제는 이거였다.

while문에 조건을 걸 때 input(string 변수)에다가 이미 readLine()을 해서 입력된 값을 읽고 저장까지 한 것이다. 그래서 다음에 또 readLine()을 하면 안되고 이 값이 담긴 input을 사용했어야 하는데 난 그냥 조건문에만 쓰인 것이니 일회성(?)이라고 생각해서 조건문은 조건문대로 while문의 코드블록 안에서는 그거대로 readLine이 실행되어 읽어들일 값이 없다고 자꾸 NullPointException이 났던 것. 근데 아직 의문인 것은 읽어들일 것이 없으면 애초에 while문이 멈춰야 하는데 왜 실행이 됐는지..? 그것은 아직 모르겠다.

아무튼 BufferedReader로 eof을 실행하는 방법은 String 변수에 readLine()을 수행하여 값을 담고, 그 값이 null인지 확인, 여기서 더 확실하게 하기 위해서는 값이 담긴 input이 비었는지 isEmpty()로 한번 더 확인하는 것이 좋다.

profile
IT꿈나무 댓츠미

0개의 댓글