BufferedReaderreadLine() 메서드는 한 줄씩 텍스트를 읽어오는 데 유용
readLine()Ctrl + ZCtrl + D백준 문제를 풀다가 개행문자가 포함된 입력을 받았어야 했다. 그래서 아래와 같은 방법을 사용했다.
BufferedReader의 readLine()을 사용하게 되면 개행문자가 입력되는 경우, 입력이 종료된다.
while을 사용하여 개행문자가 입력되어도 입력이 지속되고, EOF가 입력되었을 때 종료하도록 하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
System.out.println("sb.toString());
br.close();
}
}
while ((line = br.readLine()) != null)조건에서readLine()이 개행 문자를 만나 종료되는 것은 맞지만,while루프 덕분에 "계속 입력을 받는 것처럼 보이는 것!!!!"
🚨 핵심은 readLine()이 종료되는 시점과 while 루프의 조건 판단 시점이 다르다는 점
readLine()은 개행 문자를 만나면 종료되지만,null을 반환하는 것은 아니다!!!!
개행 문자 앞까지의 문자열을 반환하므로,while루프는 계속 실행
while루프가 종료되는 시점은readLine()이 더 이상 읽을 내용이 없어서null을 반환할 때