bufferedReader 와 스트림에 대한 이해가 필요할 것 같습니다..
일단 기초적인 부분만 얘기하자면
bufferedReader.readLine() 은 한 줄(개행까지)만 읽으니 당연히
split("\n") 을 해주더라도 한 줄 입력받고 데이터를 더이상 읽지 않는데 나눠줄 데이터가 더이상 없습니다.
그래서 s[0] 에는 처음 입력한 한 줄이 저장되어 있는 반면 s[1] 부터는 데이터가 저장되어 있지 않는 것이고요.
그래서 각 줄 별로 읽어들이려면
br.readLine() 을 입력받으려는 줄 개수만큼 반복해주어야 합니다.
다시한번 말씀드리지만 readLine() 은 '한 줄' 만 읽습니다. 여러줄을 한 번에 읽지 않습니다.
즉, string 배열에 각 입력 행 별로 저장하고싶으시다면
for (int i = 0; i < num.length; i++){
s[i] = br.readLine();
}
하면 끝나는 문제입니다.
blueman911 4년 전
아래 소스코드에서 엔터로 입력받은 값을 구분하려고
String[] s;
s = br.readLine().split("\n");
num[i] = Integer.parseInt(s[i]);
이렇게 바꾸면 NumberFormatException 오류가 뜨더라구요.
BufferedReader로 값을 한줄씩 입력받았을 때 값이 어디에 어떻게 입력되는 건지 알 수 있을까요?
만약 위 코드에서 num[i] = Integer.parseInt(s[0]); 으로 바꾸면 또 잘 돌아가는데 이유를 모르겠습니다.