[백준] 15552번 : 빠른 A+B - JAVA(자바)

Life is ninanino·2022년 10월 5일
0

[백준] JAVA

목록 보기
7/37
post-thumbnail

https://www.acmicpc.net/problem/15552


package 백준;// @ author ninaaano

import java.io.*;
import java.util.StringTokenizer;

public class b_15552 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());
        int[] arr = new int[n];
        StringTokenizer str = new StringTokenizer(br.readLine()," ");


        for(int i=0; i<arr.length; i++){
            int a = Integer.parseInt(str.nextToken());
            int b = Integer.parseInt(str.nextToken());
            arr[i] = a+b;
        }
        for(int j : arr){
            bw.write(j); // System.out.print 의 기능 \n을 해도된다
            bw.newLine(); // 개행
        }
        bw.flush();
        br.close();
    }
}

일단 이건 오답이다.
5
1 1
12 34
5 500
40 60
1000 1000
입출력 예시인 값을 집어 넣으면 NoSuchElementException이 발생한다
디버깅을 돌려보면 n에 5가 들어와서 배열 5칸을 만들긴 하는데
그 다음 1 1을 입력하는 순간 에러가 발생한다.
NoSuchElementException이란 공간이 없다는 뜻인데, 없는 공간의 값을 꺼낼 때 발생하는 오류이다
개행하면 그 다음 값을 전혀 받지 못하고 옆으로 공백을 기준으로 나열해야만 값이 들어간다...

++ 정답

package 백준;// @ author ninaaano

import java.io.*;
import java.util.StringTokenizer;

public class b_15552 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());
        int[] arr = new int[n];

        for(int i=0; i<n; i++){
            StringTokenizer str = new StringTokenizer(br.readLine()," ");
            int a = Integer.parseInt(str.nextToken());
            int b = Integer.parseInt(str.nextToken());
            arr[i] = a+b;
            bw.write(String.valueOf(arr[i])+"\n");
            // bw.newLine(); // 개행
        }
        br.close();
        bw.flush();
        bw.close();
    }
}

write() 메소드는 String으로만 출력이 가능하다
정수값으로 출력하려면 String.valueOf()를 통해 타입 변환을 해야한다
write를 사용한다고 해서 바로 출력되는 것이 아니라 담아두었다가 flush를 사용했을 때 출력이 되는데
String 형태로 담아지고 있어서 출력이 안되는 것이였당...

해결...

profile
백엔드 프로그래밍을 공부하고 있습니다. AWS, 클라우드 환경에 대해 관심이 많습니다.

0개의 댓글