키보드로부터 입력된 데이터를 읽기 위해서는 표준 입력 스트림(System.in)을 직접 다루기보다, 이를 편리하게 도와주는 Scanner 클래스를 주로 사용한다.
Scanner는 자바의 기본 라이브러리인 java.util 패키지에 들어있다. 따라서 코드 맨 윗줄에 import 문이 필요하다.
import java.util.Scanner; // 1. Scanner 클래스 불러오기
public class Main {
public static void main(String[] args) {
// 2. Scanner 객체 생성
Scanner scanner = new Scanner(System.in);
// ... 입력 코드 ...
}
}
입력받고자 하는 데이터 타입에 따라 다른 메소드를 사용한다.
| 메소드 | 설명 |
|---|---|
nextLine() |
엔터(Enter) 키를 치기 전까지의 문자열 전체를 읽음 |
next() |
공백(스페이스) 전까지의 문자열을 읽음 |
nextInt() |
입력받은 데이터를 int 타입으로 읽음 |
nextDouble() |
입력받은 데이터를 double 타입으로 읽음 |
가장 권장되는 방식은 nextLine()으로 한 줄을 통째로 읽은 뒤, 필요에 따라 숫자로 변환하는 방식이다. (nextInt()를 직접 쓰면 입력 버퍼에 남은 ‘엔터’ 값 때문에 다음 입력에서 오류가 날 수 있기 때문)
System.out.print("이름 입력: ");
String name = scanner.nextLine(); // 문자열 입력
System.out.print("나이 입력: ");
String strAge = scanner.nextLine();
int age = Integer.parseInt(strAge); // 문자열을 숫자로 변환
System.out.println("결과: " + name + "님은 " + age + "살입니다.");
입력 장치를 계속 열어두면 메모리 낭비가 발생할 수 있다. 프로그램이 끝날 때 scanner.close()를 호출해주는 것이 좋다.