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을 닫으면 프로그램 전체에서 표준 입력을 더 이상 사용할 수 없게 되므로 주의하세요.