본문 바로가기

BE/JAVA

11. JAVA - Scanner

Scanner (표준 입, 출력 객체 지원 클래스)

1. Scanner

 

: java.util 패키지에 들어있는 클래스 (java.util.Scanner)import로 불러와서 사용해야 한다.( import 단축키 - Ctrl + Shift + O )

package input;

import java.util.Scanner;
// java.lang은 기본 패키지로 자동으로 import되며
// java.lang을 제외한 패키지는 모두 import로 가져와야 사용 가능하다

public class Input {
	public static void main(String[] args) {
        // System.out	: 표준 출력 객체
        // System.in	: 표준 입력 객체

        Scanner sc;
        // Scanner 클래스 : 데이터를 읽어오는 도구
        // Scanner : 자료형(type), sc : 변수 이름

        sc = new Scanner(System.in);
        // sc라는 변수에 공간을 생성한다

        System.out.print("이름 입력 : ");
        String name = sc.next();	// next() : 입력 받는 키 값을 문자열로 가져온다
                                	// 이 값을 name이라는 문자열 변수로 저장한다

        System.out.println("입력 받은 이름은 " + name + " 입니다");

        sc.close();
        // - scanner는 사용 후 종료를 시켜주는 것이 바람직하다
    }
}

저장할 변수 이름이 sc 일 필요는 없다.

또한, Scanner 를 선언하면서 동시에 초기화할 수 있다.

Scanner abc = new Scanner(System.in);

 

 

 

 

 

package input;

import java.util.Scanner;
// java.lang은 기본 패키지로 자동으로 import되며
// java.lang을 제외한 패키지는 모두 import로 가져와야 사용 가능하다

public class Input {
	public static void main(String[] args) {

    	// 1. 키보드 값을 입력받기 위해서 Scanner를 생성
        Scanner scan = new Scanner(System.in);
        
        // 2. 키 값을 저장할 변수를 선언
        String name;
        int age;
        double height;
        
        // 3. 입력 진행
        System.out.print("이름 : ");
    	name = scan.next();			// next() : 키 값을 문자열로 가져온다
        
        System.out.print("나이 : ");
        age = scan.nextInt();			// nextInt() : 키 값을 정수로 가져온다
        
        System.out.print("신장 : ");
        height = scan.nextDouble();		// nextDouble() : 키 값을 실수로 가져온다
        
        // 4. 입력받은 내용을 원하는 대로 출력한다
        System.out.printf("이름 : %s (%d세)\n", name, age);
        System.out.println("신장 : " + height + "cm");
        
        scan.close();
        
    }
}

Scanner는 입력된 키 값을 '버퍼(buffer)' 라는 임시 공간을 활용해서 가져온다.

※ 버퍼는 enter와 space를 구분자로 인식한다 ※

 

 

 

 

 

package input;

import java.util.Scanner;

public class Input {
	public static void main(String[] args) {
    	
        Scanner sc = new Scanner(System.in);
        int n1, n2;
        
        System.out.print("두 정수 입력 : ");
        // 콘솔 입력창에서 10 20 30 40 50 60 을 입력
        // 버퍼는 enter와 space를 구분자로 인식하기 때문에
        // 버퍼에 10 값이 스페이스바 때문에 n1으로 구분되어 들어가고
        // 버퍼에 20 값이 스페이스바 때문에 n2로 구분되어 들어간다
        n1 = sc.nextInt();
        n2 = sc.nextInt();
        System.out.printf("n1 = %d, n2 = %d\n", n1, n2);
        
        
        int n3, n4;
        
        System.out.print("다시 두 정수 입력 : ")
        // 정수를 다시 입력받으려 했으나 위에서 입력한 값에서
        // 10과 20은 n1과 n2로 할당되었고 뒤에 남은 30과 40값이
        // 구분자에 의해 자동으로 n3와 n4로 할당된다
        n3 = sc.nextInt();
        n4 = sc.nextInt();
        System.out.printf("n3 = %d, n4 = %d\n", n3, n4);
        
        
        sc.nextLine();	// 버퍼의 모든 데이터를 가져온다
        		// - 엔터만 구분자로 인식
        
        int n5, n6;
        
        System.out.print("마지막 두 정수 입력 : ")
        // 여기서 나머지 할당될 값 50, 60이 들어오지 않는 이유는
        // enter만 구분자로 인식하는 nextLine()이 사용되었기 때문이다
        // 버퍼에서 남은 입력이 50 60\n 이 남았기 때문에 \n을 인식하여
        // "50 60" 이 통째로 한 입력값으로 인식되며, 이 값은 int자료형이
        // 아니므로 n5와 n6에 들어갈 수 없으니 버려지게 되고 새로운 입력값을 받는다
        // 70 80 입력하면 n5와 n6에 70, 80 값이 입력된다
        n5 = sc.nextInt();
        n6 = sc.nextInt();
        System.out.printf("n5 = %d, n6 = %d\n", n5, n6);
        
        sc.close();
        
    }
}
728x90

'BE > JAVA' 카테고리의 다른 글

IntelliJ 에서 JavaFX 프로젝트 만들기  (0) 2024.03.09
10. JAVA - 연산자  (1) 2023.11.13
09. JAVA - 포멧 문자  (1) 2023.11.13
08. JAVA - 패키지란?  (0) 2023.11.13
07. JAVA 변수와 자료형  (0) 2023.11.09