Backend/Java

Scanner API

AIHYEONJI 2025. 5. 15. 10:47

1. Scanner

자바에서 Scanner는 사용자로부터 키보드 입력을 받을 수 있게 해주는 표준 입력 처리 도구입니다. java.util 패키지에 포함되어 있으며, 숫자, 문자열 등 다양한 형식의 데이터를 쉽게 입력받을 수 있도록 도와줍니다. 보통 콘솔에서 입력을 받을 때 사용되며, System.in을 통해 표준 입력 스트림을 읽습니다.

 

 

2. Scanner 사용

  1. 먼저 import java.util.Scanner;를 선언합니다.
  2. Scanner sc = new Scanner(System.in); 으로 객체를 생성합니다.
  3. sc.nextInt(), sc.nextLine(), sc.nextDouble() 등 다양한 메서드를 사용해 입력을 받습니다.
  4. 사용이 끝나면 sc.close();를 호출해서 자원을 정리합니다. --> 써주는 것이 관례

 

3. 메서드 정리

next() 단어 하나 (공백 전까지) 읽음
ex)  apple banana 를 입력하면 apple까지만 출력
nextLine() 한 줄 전체 입력 (공백 포함)
nextInt() 정수 입력
nextDouble() 실수 입력
nextBoolean() true/false 입력

 

import java.util.Scanner;

public class ScannerEx {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);  // Scanner 객체 생성

        System.out.print("이름을 입력하세요: ");
        String name = sc.nextLine();          // 문자열 입력

        System.out.print("나이를 입력하세요: ");
        int age = sc.nextInt();               // 정수 입력

        System.out.println("안녕하세요, " + name + "님! 당신의 나이는 " + age + "세입니다.");

        sc.close();  // Scanner 닫기 (권장)
    }

 

주의사항

nextInt() 후에 nextLine()을 바로 쓰면 입력이 꼬일 수 있습니다. 이때는 sc.nextLine()을 한 번 더 호출해서 버퍼를 비워줘야 합니다.

int age = sc.nextInt();
sc.nextLine();  // 개행 문자 제거
String name = sc.nextLine();



4. System.in

System.in은 자바에서 표준 입력 장치를 의미하며, 일반적으로 키보드 입력을 받을 때 사용되는 입력 스트림(InputStream)입니다. 보통 Scanner, BufferedReader와 함께 사용되어 입력값을 읽는 데 활용되며, 바이트 단위로 데이터를 읽는 특성을 갖습니다. 텍스트 입력을 더 쉽게 다루기 위해 보통 래퍼 클래스들과 함께 사용됩니다.

 

** 입력 스트림(InputStream) : 키보드 입력 스트림 > OS > Java 순서로 데이터 이동

** OS : 중간매체로 파일 생성 및 삭제를 담당한다.

import java.io.IOException;

public class SystemInEx {
    public static void main(String[] args) throws IOException {
        System.out.print("문자 하나를 입력하세요: ");
        int input = System.in.read();  // 한 글자(바이트)를 읽음

        System.out.println("입력한 문자: " + (char)input);
    }
}