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 형태로 담아지고 있어서 출력이 안되는 것이였당...
해결...