Backend/Java
Scanner API
AIHYEONJI
2025. 5. 15. 10:47
1. Scanner
자바에서 Scanner는 사용자로부터 키보드 입력을 받을 수 있게 해주는 표준 입력 처리 도구입니다. java.util 패키지에 포함되어 있으며, 숫자, 문자열 등 다양한 형식의 데이터를 쉽게 입력받을 수 있도록 도와줍니다. 보통 콘솔에서 입력을 받을 때 사용되며, System.in을 통해 표준 입력 스트림을 읽습니다.
2. Scanner 사용
- 먼저 import java.util.Scanner;를 선언합니다.
- Scanner sc = new Scanner(System.in); 으로 객체를 생성합니다.
- sc.nextInt(), sc.nextLine(), sc.nextDouble() 등 다양한 메서드를 사용해 입력을 받습니다.
- 사용이 끝나면 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);
}
}