Scanner
를 사용하여 입력데이터를 입력 받습니다.Scanner
는 Java에서 사용자로부터 입력을 받기 위한 가장 일반적인 클래스입니다. java.util
패키지에 포함되어 있으며, 키보드 입력뿐만 아니라 파일, 문자열 등 다양한 소스로부터 데이터를 읽어올 수 있습니다.
Scanner scanner = new Scanner(System.in);
Scanner scanner
new Scanner(System.in);
Scanner scanner = new Scanner(System.in);
Scanner 클래스는 다양한 데이터 타입을 읽을 수 있는 메서드를 제공합니다:
nextLine()
: 한 줄 전체를 문자열로 읽습니다.
next()
: 공백을 기준으로 다음 토큰을 문자열로 읽습니다.
nextInt()
: 다음 토큰을 int로 읽습니다.
nextDouble()
: 다음 토큰을 double로 읽습니다.
nextBoolean()
: 다음 토큰을 boolean으로 읽습니다.
hasNext()
: 읽을 토큰이 더 있는지 확인합니다.
hasNextInt()
,hasNextDouble()
등: 다음 토큰이 특정 타입인지 확인합니다.
import java.util.Scanner;
public class ScannerPractical {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 정수 입력 받기
System.out.print("나이를 입력하세요: ");
int age = scanner.nextInt();
// nextInt() 후에 남은 줄바꿈 문자 처리
scanner.nextLine();
// 문자열 입력 받기
System.out.print("직업을 입력하세요: ");
String job = scanner.nextLine();
// 실수 입력 받기
System.out.print("키를 입력하세요(m): ");
double height = scanner.nextDouble();
System.out.println("입력 정보: " + age + "세, " + job + ", 키 " + height + "m");
scanner.close();
}
}
nextInt()
, nextDouble()
등의 메서드는 줄바꿈 문자를 버퍼에 남겨둡니다. 이후 nextLine()
을 호출하면 이 줄바꿈 문자를 바로 읽어버려 원하는 입력을 받지 못할 수 있습니다. 위 예제처럼 scanner.nextLine()
을 추가로 호출하여 버퍼를 비워주세요.InputMismatchException
이 발생할 수 있습니다. 실제 프로덕션 코드에서는 이를 적절히 처리해야 합니다.close()
메서드로 자원을 해제해주는 것이 좋습니다. 하지만 System.in
을 닫으면 프로그램 전체에서 표준 입력을 더 이상 사용할 수 없게 되므로 주의하세요.