본문 바로가기

JAVA

System.in.read()의 중복 사용

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