티스토리 뷰

Java

[Java] Scanner Class (스캐너)

zubetcha 2021. 10. 29. 16:42

 

Scanner 클래스란?

Scanner 클래스는 콘솔에서 입력을 받기 위해 사용되며, 각각의 데이터 타입으로 반환한다.

java.util 패키지를 사용하기 때문에 해당 패키지를 import 통해 호출해야 사용할 수 있다.

Scanner 를 사용하기 위해서는 클래스의 객체를 생성해야 하며, Scanner 클래스 문서 안에 있는 메소드 중 자료 타입에 맞게 하나를 사용해야 하며, Scanner 메소드는 아래와 같다.

 

Scanner 메소드 종류

Method Description
nextBoolean() 데이터 타입이 논리형으로 입력된 값을 읽음
nextByte() 데이터 타입이 byte 으로 입력된 값을 읽음
nextShort() 데이터 타입이 정수형 short 로 입력된 값을 읽음
nextInt() 데이터 타입이 정수형 int 로 입력된 값을 읽음
nextLong() 데이터 타입이 정수형 long 으로 입력된 값을 읽음
nextFloat() 데이터 타입이 실수형 float 으로 입력된 값을 읽음
nextDouble() 데이터 타입이 실수형 double 로 입력된 값을 읽음
next() 데이터 타입이 문자형으로 입력된 값을 읽음 - 공백을 기준으로 문장 한 개만 읽음
nextLine() 데이터 타입이 문자형으로 입력된 값을 읽음 - 공백과 줄 바꿈, 구분 기호를 포함한 전체 입력 줄을 읽음

 

💡 문자형을 제외한 나머지는 자료 타입의 이름이 next 뒤에 붙지만, 문자형만 예외로 next 뒤에 String() 대신 Line() 이 붙는다.

💡 문자 데이터 타입 char 형으로 받는 메소드는 없다. char 형은 String 으로 받은 후 charAt() 메소드로 문자를 반환해야 한다.

 

Scanner 클래스 사용 방법

  • java.util 패키지를 import 한다.
  • Scanner 객체를 생성하고 System.in 이라는 입력 스트림을 연다.
  • 데이터 타입에 맞는 메소드를 사용하여 변수를 선언한다.
  • Scanner 를 닫아줌으로써 종료한다.

 

Close 메소드

Scanner 클래스에는 열려 있는 Scanner 를 닫아줄 수 있는 Close 메소드가 있다.

Close 메소드를 사용하지 않더라도 Closable 인터페이스가 호출되어 스트림을 닫아주지만 사용하지 않는 입력 또는 출력 스트림이 열리지 않도록 Close 메소드를 사용하여 Scanner 를 닫아주는 것이 좋다.

 

Scanner Class Example ( String, Integer, Double 데이터 타입)

import java.util.Scanner; // package import

class Main {
  public static void main(String[] args) {
    Scanner myObj = new Scanner(System.in); // Scanner Object 생성

    System.out.println("Enter name, age and salary:");

    // String input
    String name = myObj.nextLine();

    // Numerical input
    int age = myObj.nextInt();
    double salary = myObj.nextDouble();

    // Output input by user
    System.out.println("Name: " + name); 
    System.out.println("Age: " + age); 
    System.out.println("Salary: " + salary); 

	myObj.close();
  }
}

Scanner Class Example Result

 

💡 만약 정수 데이터 타입의 입력 란에 문자형을 입력하는 등 데이터 타입을 잘못 입력하는 경우 "InputMismatchException" 와 같이 예외/에러 메시지가 발생할 수 있다. 

'Java' 카테고리의 다른 글

[Java] Packages Tutorial (패키지 튜토리얼)  (0) 2021.10.29
[Java] Ternary Operator (삼항 연산자)  (0) 2021.10.29
[Java] Switch-Case Statement  (0) 2021.10.29
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday