Java Scanner로 읽어들일때 주의점
System.out.println("첫번째 입력하시오:");
String str = sc.next();
System.out.println(str);
System.out.println("두번째 입력하시오:");
String str2 = sc.nextLine();
System.out.println(str2);
이런식으로 두번째 입력을 받지 않고 종료되어 버린다.
그이유는 next()는 구분자로 스페이스바나 엔터같은 개행키를 사용한다.
따라서
첫번째 입력하시오: 라는 표시가 뜨고
커서가 두번째줄에 깜빡거리고 있을때
안녕하세요를 타자로 치고 엔터키를 눌렀다.
str에는 "안녕하세요"가 들어가있었고 엔터키는 여전히 남아있었다.
그리고 두번째 입력하시오:가 출력이되었고
sc.nextLine();이 그 남아있던 엔터키를 구분자로 생각해 빈문자열을 읽어들였다.
따라서 System.out.println(str2); 는 빈 문자열을 출력하게 되었다.
따라서 이런식으로 안녕하세요 반갑습니다. 라고 타이핑을 하면
next()가 안녕하세요를 읽어들이고
나머지 스페이스바와 반갑습니다. 는 nextLine()이 읽어들여
맨 마지막줄에 한칸띄고 반갑습니다.라고 출력되는것을 볼 수 있다.
Scanner sc = new Scanner(System.in);
System.out.println("첫번째 입력하시오:");
String str = sc.next();
System.out.println(str);
sc.nextLine();
System.out.println("두번째 입력하시오:");
String str2 = sc.nextLine();
System.out.println(str2);
그럴때는 중간에 nextLine을 추가해줘서
개행문자를 저기서 한 번 읽어들이게 해주면 문제없다.
아주 잘 작동하는 모습을 볼 수 있다.