

BufferedReader를 선언하고 while((str = bfr.readLine()) != null)가 있었음을 기억하고 있었다.while문 안에 bfw.write(str)를 사용하여 입력받을 때마다 바로 출력하려고 했으나.. 
while(true) {
String str = br.readLine();
if(str == null) {
break;
}
while문 조건을 이렇게 설정하면 bw.write를 사용해서 출력도 가능한 것 같다.while((str = bfr.readLine()) != null) {
bfw.write(str);
}
StringBuilder를 사용하여 append 한 뒤, System.out.print를 했더니
가 떴다. StringBuilder는 String을 연결하거나 합칠때 주로 사용하는 것으로 알고 있는데 위와 같이 풀었을때는 왜 틀렸는지 모르겠다😅readLine()은 한 줄을 전부 읽어온 뒤 마지막 문자, 즉 개행을 버린다. 그렇기 때문에 bfw.write(str + "\n")와 같이 사용하거나 bfw.newLine()을 사용하여 개행을 따로 출력해주어야 한다.import java.io.*;
public class Main2 {
public static void main(String[] args) throws IOException {
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
String str;
while((str = bfr.readLine()) != null) {
sb.append(str).append('\n');
}
System.out.print(sb);
bfr.close();
bfw.flush();
bfw.close();
}
}
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "";
while((str = bfr.readLine()) != null) {
bfw.write(str + "\n");
// 또는 bfw.write(str); bfw.newLine();
bfw.flush();
}
bfr.close();
bfw.close();
}
}
StringBuilder와 BufferedWriter의 차이점이 무엇인지 공부하기! 지금 나에겐 문제를 맞추는 것이 중요한게 아니라 개념들을 정확히 이해하고 넘어가는 것이 중요하다.while문의 조건이 잘못된 줄 알았는데 BufferedReader의 readLine() 특징을 잘 몰랐다. 백준을 풀면서 매일같이 썼는데도 기본적인 개념이 부족하니 이런 간단한 문제에서 헤맸던 것 같다🙄 BufferedReader, BufferedWriter, StringBuilder, System.out.print의 특징을 정확하게 짚고 넘어가자.