System.read.in() 메서드를 사용할 경우 터미널에서 키보드 입력을 대기한다.
값이 다 입력된 후에(엔터 입력 후에) 입력받은 값을 변수에 담는다.
후에 System.read.in() 메서드를 한번 더 사용하니 키보드 입력 받을 틈도 없이 메서드가 종료되었다.
아무 입력도 못했는데 해당 메서드는 쓰레기값을 리턴했다.
※예시(잘못된 사용)
int a = System.read.in();
System.out.println(a);
int b = System.read.in();//입력 대기X
System.out.println(b);//깨진 문자 출력
이유를 찾아보니 System.read.in() 값 입력 후에 '\n'(엔터)가 남아있어서 바로 종료되었다는 것 같다.
(해결법을 찾아서 더 정확한 원인은 찾아보기 귀찮으니 조회수도 없는 블로그지만 지나가던 쌉고수가 지적해줬으면 좋겠다.)
해결법은 기존에 입력된 '\n'을 처리하기 위해 System.read.in()를 추가로 두번 더 해줘야 하는 것이다. 왜 한번이 아니라 두번인지도 잘 모르겠다.
※예시(올바른 사용)
int a = System.read.in();
System.out.println(a);
System.read.in(); //'\n' 처리
System.read.in();
int b = System.read.in();
System.out.println(b);
'JAVA' 카테고리의 다른 글
executeBatch()메서드 (0) | 2019.08.23 |
---|---|
[JAVA]renameTo()메서드 (0) | 2019.08.09 |
[이클립스] 전체 파일 인코딩 한번에 변경하기 (0) | 2019.08.08 |
matches()메서드 (0) | 2019.08.07 |
getCause()메서드 (0) | 2019.05.10 |