Scanner도 결국 내부에 버퍼가 있고, 미리 읽어들여와서 출력을 내주는 것이기때문에, 또 다른 읽기 방식을 사용하게되면 Scanner가 이미 물고있는 버퍼 내용을 알 수 없어
제대로 동작이 되지 않습니다. 즉, Scanner를 썼다면 Scanner만 써야 합니다.
애초에 .read()와 Scanner를 둘 다 사용할 이유도 없구요.
그럼 질문하신 내용으로 돌아와서, 약간 질문을 변경해보자면 Scanner를 안쓰고 System.in.read()만 사용해서는 안되냐 물어보신다면 당연히 됩니다.
다만 해당 함수의 레퍼런스를 보면 ' Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. '
와 같습니다. 결국 byte 하나씩 읽어온다는 말이고, 숫자 하나에 1 byte씩이니 char 또는 한 자리 int를 읽는데는 문제 없겠죠.
그럼 문제는 첫번째줄에는 1~3자리의 숫자가 입력될 것이라는 점인데요, 숫자가 끝나면 무조건 개행문자가 있을 것이므로 이것도 판단하는데 문제는 없습니다.
최종적으로 코드를 변경해서 아래와 같이 하시면 System.in.read()를 사용해서 통과 됩니다.
newidextendsid 2년 전
14번 라인에 System.in.read()로 읽어들여서 하면 안되는 건가요?
답도 문제없이 출력 되는것 같습니다.
char형 대신 문자열로 처리해서 하니 맞긴 했습니다만 이유를 알 고 싶습니다.