자바

[자바 기초] 06. 스캐너(Scanner)

dev스카이 2024. 3. 26. 22:36

Scanner

System.out 을 통해서 출력을 했듯이, System.in 을 통해서 사용자의 입력을 받을 수 있다. 그런데 자바가 제공하는 System.in 을 통해서 사용자 입력을 받으려면 여러 과정을 거쳐야해서 복잡하고 어렵다. 자바는 이런 문제를 해결하기 위해 Scanner 라는 클래스를 제공한다. 이 클래스를 사용하면 사용자 입력을 매우 편리하게 받을 수 있다.

 

형식

import java.util.Scanner;
  • Scanner를 쓰기 위해선 java.util 패키지를 import 해주어야 한다.
Scanner scanner = new Scanner(System.in);
  • 그 다음, main 내에 Scanner의 객체를 만든다.
  • Scanner는 System.in을 사용해서 사용자의 입력을 편리하게 받도록 도와준다.

 

예제 - Scanner를 이용하여 문자열, 정수, 실수를 입력받고 출력해본다.

 

Scanner1

package scanner;

import java.util.Scanner;

public class Scanner1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("문자열을 입력하세요: ");
        String str = scanner.nextLine(); //입력을 String으로 가져온다.
        System.out.println("입력한 문자열: " + str);

        System.out.print("정수를 입력하세요: ");
        int intValue = scanner.nextInt(); //입력을 int로 가져온다.
        System.out.println("입력한 정수: " +  intValue);

        System.out.print("실수를 입력하세요: ");
        double doubleValue = scanner.nextDouble(); //입력을 double로 가져온다.
        System.out.println("입력한 실수: " +  doubleValue);
    }
}
  • scanner.nextLine() - 엔터( \n )을 입력할 때 까지 문자를 가져온다.
  • scanner.nextInt() - 입력을 int 형으로 가져온다. 정수 입력에 사용한다.
  • scanner.nextDouble() - 입력을 double 형으로 가져온다. 실수 입력에 사용한다.

❗주의

타입이 다르면 오류가 발생하므로 타입에 맞게 입력을 하도록 하자.

 

🌟 println() vs print()

  • println() - 출력을 한 후 다음 라인으로 넘긴다.
    • 콘솔 창에 문자열이나 정수 등을 입력하고 엔터 키를 치면 \n (개행 문자)라는 문자를 남긴다. 이 문자는 영어로 new line character, 한글로 줄바꿈 혹은 개행 문자라고 하고, 이름 그대로 새로운 라인으로 넘기라는 뜻이다. 콘솔에서는 이 문자를 보고 다음 라인으로 넘긴다.
  • print() - 출력을 한 후 다음 라인으로 넘기지 않는다.

 

예제 - while문을 사용해서 프로그램이 종료할 때까지 문자열 입력을 계속 받고 출력하는 프로그램을 작성해본다.
        - 종료 조건은 입력받은 문자열이 exit일 경우에 종료한다.

 

ScannerWhile1

package scanner;

import java.util.Scanner;

public class ScannerWhile1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.print("문자열을 입력하세요(exit: 종료):");
            String str = scanner.nextLine();
            if (str.equals("exit")) {
                System.out.println("프로그램을 종료합니다.");
                break;
            }
            System.out.println("입력한 문자열: " + str);
        }
    }
}

 

  • 입력 받은 문자가 "exit" 이면 "프로그램을 종료합니다."를 출력하고 break 문을 통해서 while문을 빠져나간다.

 

Scanner 말고도 InputStreamReader(), BufferedReader() 등이 있는데 이건 나중에 다루도록 한다.