scanner
- sc 입력 후 왼쪽 ctrl + space bar
- 키보드를 통해 데이터를 입력받는 스캐너
Scanner sc = new Scanner(System.in);
sc.close();
String addr = "";
//string addr;
System.out.print("주소를 입력하세요:");
addr = sc.nextLine();
sc.close();
- sc(scanner)로부터 주소를 입력 받아서 addr이라는 기억장소에 넣겠다

String addr = "";
//string addr;
System.out.print("주소를 입력하세요:");
addr = sc.next();
sc.close();

에러1
Scanner sc = new Scanner(System.in);
String addr = "";
System.out.print("주소를 입력하세요:");
addr = sc.next();
String name = "";
System.out.println("이름을 입력하세요:");
name = sc.nextLine();
System.out.println(name+"님은" + addr + "에 삽니다.");
sc.close();

- .next는 문자열을 입력을 받는다. 띄어쓰기 전까지!
- .nextLine는 문자열을 입력받는다. 한 줄 전체를 입력 받는다.
키보드 버퍼가 비어있을 경우 입력을 요구하며 대기하고,
키보드 버퍼가 비어있지 않을경우, 키보드 버퍼 전체의 내용을 읽어들인다
- scanner로 입력을받은 데이터는 키보드 버퍼 라는 임시 기억장소에 들어가고,
next
와 nextLine
같은 메소드가 버퍼에서 본인이 필요한 데이터를 가져옴
- addr은 키보드 버퍼에서 강남구만 읽어오고, name은 키보드 버퍼에 남은 전체를 읽어옴
해결1
Scanner sc = new Scanner(System.in);
String addr = "";
System.out.print("주소를 입력하세요:");
addr = sc.nextLine();
String name = "";
System.out.println("이름을 입력하세요:");
name = sc.nextLine();
System.out.println(name+"님은" + addr + "에 삽니다.");
sc.close();

- addr을
nextLine()
으로 키보드버퍼의 전체를 읽어오고,
- name은 키도브버퍼가 비어있으므로 값을 입력받고, 전체를 읽어옴
에러2
Scanner sc = new Scanner(System.in);
int age = 0;
System.out.print("나이를 입력하세요 :");
age = sc.nextInt();
String name ="";
System.out.println("이름을 입력하세요 :");
name = sc.nextLine();
System.out.println(name+"님은" + age + "살 입니다.");
sc.close();

- 키도브 버퍼는 20이라는 숫자와 키보드로 입력한 enter까지 저장함
next.Int()
는 20이라는 숫자만 읽어오고, enter은 키보드 버퍼에 놔둠
next.Line()
는 키보드 버퍼에 남겨져 있는 enter만 가져옴
해결2
Scanner sc = new Scanner(System.in);
int age = 0;
System.out.print("나이를 입력하세요 :");
age = sc.nextInt();
sc.nextLine();
String name ="";
System.out.println("이름을 입력하세요 :");
name = sc.nextLine();
System.out.println(name+"님은" + age + "살 입니다.");
sc.close();

sc.nextLine();
: 키보드 버퍼를 비워주면 됨
댓글남기기