ㅤㅤㅤ
Scanner nextInt 뒤에 nextLine 쓸 때 생기는 오류 해결법 본문
Scanner scan = new Scanner(System.in);
int i = scan.nextInt(); // 1)
String s = scan.nextLine(); // 2)
이런 코드를 짤 때 첫번째 int 만 입력을 받고 그다음 nextLine() 부분을 건너띄는 경우가 발생한다.
이는 nextInt() 에서 Enter 를 칠 때 발생하는 '개행문자'를 처리하지 않고 버퍼에 남기기 때문이다.
따라서 scanner 에 있는 개행문자 \r\n 을 비워주어야 한다.
그런데 자바의 Scanner 에는 flush 함수가 없다고 하니 참 난감하다.
그렇다고 방법이 없는 것은 아닌데, 별로 맘에 들지 않는 임시방편으로 몇 가지가 있다.
1. 1번과 2번 코드 사이에 scan.nextLine() 을 집어넣어서 개행문자를 처리해버리도록 한다.
2. 1번과 2번 코드 사이에 scan.skip("[\\r\\n]+"); 를 집어 넣어서 개행문자를 skip 하게 한다.
3. 1번과 2번 코드에 사용되는 scanner 를 따로 만든다.
Scanner scan1 = new Scanner(System.in); Scanner scan2 = new Scanner(System.in); 이렇게..
개인적으론 1번이 제일 편한 것 같다.. flush를 만들면 좋겠지만 귀찮고..
끝
'プログラミング > JAVA' 카테고리의 다른 글
enum 클래스의 사용과 이해 열거형 (JDK 1.5 ↑) (0) | 2017.06.15 |
---|---|
문자열을 위한 switch (0) | 2017.06.15 |
CSV파일을 UTF-8으로 저장 (0) | 2017.06.13 |
Scanner 클래스 예제 (0) | 2017.06.12 |
NIO Write 예제 (0) | 2017.06.12 |
Comments