1 분 소요

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이라는 기억장소에 넣겠다

image

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

sc.close();

image

에러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();
 

image

  • .next는 문자열을 입력을 받는다. 띄어쓰기 전까지!
  • .nextLine는 문자열을 입력받는다. 한 줄 전체를 입력 받는다.
    키보드 버퍼가 비어있을 경우 입력을 요구하며 대기하고,
    키보드 버퍼가 비어있지 않을경우, 키보드 버퍼 전체의 내용을 읽어들인다
  • scanner로 입력을받은 데이터는 키보드 버퍼 라는 임시 기억장소에 들어가고,
  • nextnextLine같은 메소드가 버퍼에서 본인이 필요한 데이터를 가져옴
  • 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();
 

image

  • 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();

image

  • 키도브 버퍼는 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();

image

  • sc.nextLine(); : 키보드 버퍼를 비워주면 됨

댓글남기기