Scanner
Java에서 `Scanner` 클래스는 입력 스트림에서 텍스트 데이터를 읽기 위해 사용되는 유용한 도구입니다.
`Scanner` 클래스를 사용하면 표준 입력, 파일, 문자열 등 다양한 소스로부터 데이터를 읽을 수 있습니다.
Scanner의 사용법
`Scanner` 클래스를 사용하기 위해서는 다음과 같이 클래스를 `import`한 후 객체를 생성해야 합니다.
import java.util.Scanner; // Scanner 클래스 import
public class ScannerTest {
public static void main(String[] args) {
// Scanner 객체 생성
Scanner scanner = new Scanner(System.in);
// 입력 받기
System.out.print("이름을 입력하세요: ");
String name = scanner.nextLine();
// 입력된 데이터 사용
System.out.println("안녕하세요, " + name + "님!");
// 스캐너 닫기
scanner.close();
}
}
위의 코드에서 `Scanner scanner = new Scanner(System.in);`은 Scanner 객체를 생성하고,
입력 스트림으로 표준 입력 (`System.in`)을 사용한다는 것을 나타냅니다.
`scanner.nextLine()`을 사용하여 사용자로부터 한 줄의 문자열을 입력 받을 수 있습니다.
이를 통해 사용자의 이름을 입력받고, 입력된 이름을 활용하여 출력 결과를 생성합니다.
마지막으로 `scanner.close()`를 호출하여 Scanner 객체를 닫아 리소스를 해제합니다.
Scanner의 다양한 메서드 활용
1. `nextInt()`: 토큰(공백, 탭, 엔터)으로 구분된 문자들을 읽어서 정수로 변환하고 리턴합니다.
Scanner scanner = new Scanner(System.in);
// 정수 입력 받기
System.out.print("나이를 입력하세요: ");
int age = scanner.nextInt();
// 스캐너 닫기
scanner.close();
2. `nextDouble()` : 토큰(공백, 탭, 엔터)으로 구분된 문자들을 읽어서 실수로 변환하고 리턴합니다.
Scanner scanner = new Scanner(System.in);
// 실수 입력 받기
System.out.print("키를 입력하세요 : ");
double height = scanner.nextDouble();
// 스캐너 닫기
scanner.close();
3. `next()` : 토큰(공백, 탭, 엔터)으로 구분된 문자열을 읽고 리턴합니다.
Scanner scanner = new Scanner(System.in);
// 한 단어 입력 받기
System.out.print("직업을 입력하세요: ");
String occupation = scanner.next();
// 스캐너 닫기
scanner.close();
공백 뒤에 다른 문자열 입력들이 남아 있으면, 입력 버퍼에 읽지 않은 문자들이 남아 있을 수 있으며,
다음 scanner 출력에 나올 수 있습니다.
4. `nextBoolean()` : true와 false를 입력할 수 있습니다.
Scanner scanner = new Scanner(System.in);
// 불린 값 입력 받기
System.out.print("재학 중인지 여부를 입력하세요 (true/false): ");
boolean isStudying = scanner.nextBoolean();
// 스캐너 닫기
scanner.close();
Scanner의 파일 데이터 읽기
`Scanner` 클래스는 파일에서도 데이터를 읽을 수 있습니다.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
try {
File file = new File("data.txt"); // 파일 객체 생성
Scanner scanner = new Scanner(file); // Scanner 객체 생성하면서 file 넣어주기
while (scanner.hasNextLine()) { // 다음 코드가 있는지 확인하는 메서드
String line = scanner.nextLine(); // 한줄 scan
System.out.println(line); // 출력
}
scanner.close(); // scanner 닫아주기
} catch (FileNotFoundException e) {
System.out.println("파일을 찾을 수 없습니다."); // 파일이 없을때 나오는 문구
}
}
}
위의 코드에서는 `File`객체를 사용하여 "data.txt" 파일을 열고, Scanner 객체를 생성합니다.
그리고 `scanner.hasNextLine()`을 사용하여 파일에서 다음 줄을 읽을 수 있는지 확인하고,
`scanner.nextLine()`을 사용하여 실제로 한 줄씩 읽어 출력합니다.
Scanner의 클래스의 다양한 활용
Scanner 클래스는 입력 데이터를 파싱하고 다양한 유형의 데이터로 변환할 수 있는 기능을 제공합니다.
import java.util.Scanner; // Scanner 클래스 import
public class ScannerTest {
public static void main(String[] args) {
Scanner scanner = new Scanner("10 20 30 40 50"); // Scanner 객체 생성
while (scanner.hasNextInt()) { // 다음 int가 있는지 확인하는 메서드.
int number = scanner.nextInt();
System.out.println("읽은 숫자: " + number);
}
scanner.close(); // scanner 닫아주기
}
}
위의 코드에서는 `Scanner` 객체를 사용하여 문자열 "10 20 30 40 50"을 읽고,
`scanner.hasNextInt()`를 사용하여 다음에 읽을 수 있는 정수가 있는지 확인합니다.
그리고 `scanner.nextInt()`를 사용하여 실제로 정수를 읽고 출력합니다.
이외에도 Scanner 클래스는 다양한 유틸리티 메서드를 제공하여 입력을 처리하고 데이터를 추출하는 데 사용됩니다.
※ 유틸리티 메서드는 특정 작업을 수행하기 위해 설계된 도우미 메서드로, 보조 기능을 제공합니다.
잘못된 정보는 댓글로 알려주시면 감사하겠습니다.
'Java' 카테고리의 다른 글
Java - 6. 자바 랜덤함수(Random) 난수 생성 (0) | 2023.07.08 |
---|---|
Java - 5. 자바 if 조건문(Conditional Statement, if, else if, else) (0) | 2023.07.07 |
Java - 4. 변수(variable)와 데이터 타입(Data Type) (0) | 2023.07.06 |
Java - 2. 자바에서 출력하는 방법(System.out.println) (0) | 2023.07.04 |
Java - 1. 자바에서 주석 달기(Intro Comment) (0) | 2023.07.03 |