Scanner
- 사용자가 입력한 값을 콘솔 창으로 입력 받을 수 있음
- System.in : 입력받은 값을 바이트단위로 받아들이겠다라는 의미
Scanner sc = new Scanner(System.in);
next(), nextLine(), nextXXX()
- 사용자가 입력한 값을 문자열로 받아오는 메소드
- next() : 사용자가 입력한 값중 공백이 있을 경우 공백 이전까지만 출력해준다
- nextLine() : 사용자가 입력한 값 중 개행(엔터)이 있을 경우 공백에 무관하게 개행이전까지만 출력해준다
- 개행문자를 비워주는 기능이 있음
- 엔터키가 입력되기 전까지 블로킹(대기) 상태
- 사용자가 입력한 값에 공백이 포함될 여지가 있을경우 안전하게 nextLine쓰기 (주소 등)
- 문자열을 뽑을 때 : sc.nextLine() / sc.next()
- 정수값을 뽑을 때 : sc.nextInt() / sc.nextByte() / sc.nextShort() / sc.nextLong()
- 실수값을 뽑을 때 => sc.nextDouble() / sc.nextFloat()
- sc.nextXXX()메소드 뒤에 sc.nextLine()메소드가 와야될 경우
- 개행문자를 비워주지 않으므로 이후에 sc.nextLine();을 사용한다면 입력이 되지 않고 그냥 넘어감
- sc.nextXXX() 뒤에 sc.nextLine();으로 입력버퍼에 남아있는 엔터값을 빼주는 과정 필수
System.out.print("당신의 나이는 몇 살 입니까 : ");
int age = sc.nextInt();
sc.nextLine();
System.out.print("주소 : ");
String address = sc.nextLine();
System.out.print("당신의 키는 몇 cm입니까 : ");
double height = sc.nextDouble();
- 문자를 뽑을때 => sc.nextChar() 없음.
- sc.nextLine()메소드로 우선 문자열을 입력받은후 그뒤에 .charAt(인덱스)메소드를 통해 문자 하나만추출
System.out.print("성별(M/F) : ");
char gender = sc.nextLine().charAt(0);
// 먼저 사용자가 입력한 값을 문자열로 받아온 후, 그 문자열의 0번째 문자를 추출