Scenario:학부시절 학생관리 프로그램을 만드는데 입력받는데 중간중간에 입력을 안받고 넘기는 경우가 생김
Solution:(아래)
간혹
Scanner scan = new Scanner(System.in);
int i = scan.nextInt(); //1번코드
String s = scan.nextLine(); // 2 코드
이런 코드를 짤 때 첫번째 int 만 입력을 받고 그다음 nextLine() 부분을 Skip 하는 경우가 발생한다.
이는 nextInt() 에서 Enter 를 칠 때 발생하는 '개행문자'를 처리하지 않고 버퍼에 남기기 때문이다.
따라서 scanner 에 있는 개행문자 \r\n 을 비워주어야 하지만,
자바에는 Scanner 에는 flush 함수가 없다고 한다.
그렇다고 방법이 없는 것은 아닌데, 별로 맘에 들지 않는 임시방편으로 몇 가지가 있다.
1. 1번과 2번 코드 사이에 scan.nextLine() 을 집어넣어서 개행문자를 처리.
2. 1번과 2번 코드 사이에 scan.skip("[\\r\\n]+"); 집어넣으면 개행문자 스킵
3. Scanner 객체를 입력받을때마다 만든다..
Scanner scan1 = new Scanner(System.in);
Scanner scan2 = new Scanner(System.in);
(자원의 낭비가 커서 비추)
'To be Developer > JAVA' 카테고리의 다른 글
[JAVA] Java Collection API 시간복잡도 및 정렬 알고리즘 , 자료구조 별 시간복잡도. (0) | 2020.04.22 |
---|---|
Comparator 객체 정리 (Lambda, Stream, 2중비교 포함) (0) | 2020.04.08 |
가비지 컬렉터란 무엇일까? (0) | 2019.11.21 |
[펌글] POJO란 무엇인가??? (0) | 2018.03.05 |
자바스크립트 달력소스 (0) | 2017.01.16 |