
사진 출처 : https://www.acmicpc.net/


이번 문제에서 BufferedReader와 BufferedWriter를 사용하는게 주요 목적이지만, 아직 자바 초보인 난 구글링 하면서 코딩을 진행했다.
package c_Loop;
import java.io.*;
import java.util.StringTokenizer;
public class Loop6 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(bf.readLine());
int[] result = new int[n];
int count = 0;
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
int num1 = Integer.parseInt(st.nextToken());
int num2 = Integer.parseInt(st.nextToken());
result[i] = num1 + num2;
}
for (int i = 0; i < n; i++) {
bw.write(String.valueOf(result[i]) + "\n");
}
bw.flush();
}
}

BufferedReader() : Scanner와 유사
BufferedWriter() : System.out.println 과 유사
우선 기존에 있던 Scanner와 println 보다 훨씬 빠르기에 많은 데이터 처리하는데 유용하다고 한다.

readLine은 String형으로 반환되기에 반드시 정수형으로 변환해준 후 입력. 또한 throws IOException을 활용해 예외처리를 해줘야만 한다. (메인 메소드 옆 참고)
read한 데이터는 line 단위로만 나눠지기 떄문에 공백 단위로 하려면 따로 작업을 해줘야 한다.
👉 split() 이용 혹은 nextToken()을 활용

BufferedWriter의 경우 버퍼를 잡아 놓기에 반드시 flush()와 close()를 호출해 마무리 해줘야 한다. 그리고 write() 경우 개행이 없기에 안에 '\n'을 해줘야 한다.