- 최대한 기초가 거의 없는 분들의 입장에서 정리해본 내용이므로, 어려운 개념들은 가급적 포함시키지 않거나 최대한 간단하게만 표현하였습니다.
- Java 세팅 및 실습은 Windows 환경에서 IntelliJ를 통해 진행되었습니다.
- (참고) IntelliJ 코드 실행 단축키
- Windows, Linux : Shift+F10
- MacOS : Ctrl+R
8. Scanner 클래스
- 자바에 기본적으로 설치 되어있는 Scanner 클래스는 표준 입력, 파일, 문자열 등 다양한 입력 소스에서 데이터를 읽어오는 데 사용됩니다.
- 주로 콘솔에서 사용자의 입력을 받아 처리하는 데 자주 사용됩니다.
8-1. Scanner 클래스의 주요 기능
- 콘솔 입력 처리: 사용자가 콘솔에 입력한 데이터를 다양한 형식으로 읽어올 수 있습니다.
- 파일 입력 처리: 파일에서 데이터를 읽어올 수 있습니다.
- 토큰화: 공백, 구분자를 기준으로 문자열을 분리하여 읽어올 수 있습니다.
8-2. Scanner 클래스 사용 방법
- Scanner 클래스를 사용하기 위해서는
java.util.Scanner
패키지를 import
해야 합니다.
콘솔 입력 예시
- 프로그램 실행시 콘솔창에서 입력을 받는 코드의 예시입니다.
- 출력시
System.out
을 쓴것 처럼 System.in
을 쓰는 것이 특징입니다.
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.print("Enter your age: ");
int age = scanner.nextInt();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
scanner.close();
}
}
파일 입력 예시
- 텍스트 파일(.txt)에서 한줄씩 읽고 출력하는 코드의 예시입니다.
- io.File과 같은 추가적인 import가 필요합니다.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class FileScannerExample {
public static void main(String[] args) {
try {
File file = new File("input.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("File not found.");
}
}
}
- try-catch문에 관해선 추후에 다룰 예정입니다.
8-3. Scanner 클래스의 주요 메서드
nextLine()
: 한 줄을 문자열로 읽습니다.
nextInt()
: 정수를 읽습니다.
nextDouble()
: 실수를 읽습니다.
next()
: 공백을 기준으로 한 단어를 읽습니다.
hasNextLine()
: 다음 줄이 있는지 확인합니다.
hasNextInt()
: 다음 입력이 정수인지 확인합니다.
주의 사항
- 입력 형식: 입력 형식이 기대와 다를 경우 예외가 발생할 수 있습니다.
- 예를 들어,
nextInt()
를 호출했을 때 사용자가 숫자가 아닌 값을 입력하면 InputMismatchException
이 발생합니다.
- 리소스(자원) 해제: 입력이 끝난 후에는
scanner.close()
를 호출하여 리소스를 해제하는 것이 좋습니다.
마무리
- 본 포스팅에서는 자바에서 다양한 입력 소스를 처리하는 데 사용되는 Scanner 클래스에 대해서 정리해보았습니다.
- 다음 포스팅에서는 자바의 메서드(Method)를 알아보고 변수 사용 범위인 스코프(Scope)를 알아보는 시간을 가져보려합니다!