Java Scanner Methods
자바에서의 Scanner 메서드 (Java Scanner Methods)
Scanner
클래스는 자바에서 사용자 입력을 받거나 파일, 문자열 등에서 데이터를 읽어올 때
사용되는 유틸리티 클래스입니다.
패키지에 속하며, 키보드나 파일 등의 입력 소스로부터 데이터를 읽을 수 있습니다. .util.Scanner
Scanner
는 다양한 데이터 타입을 읽을 수 있는 여러 메서드를 제공하며, 기본적으로 공백(스페이스, 탭, 줄바꿈)을 기준으로 입력을 분리하여 처리합니다.
Scanner 생성
Scanner
클래스는 입력 소스(키보드, 파일 등)를 지정하여 생성할 수 있습니다. **System.in
**을 사용하면 키보드
입력을 처리할 수 있고, 파일이나 문자열을 입력 소스로 지정할 수도 있습니다.
Scanner 생성 예시
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 키보드 입력을 처리하는 Scanner 생성
Scanner scanner = new Scanner(System.in);
// 사용자로부터 문자열 입력 받기
System.out.print("이름을 입력하세요: ");
String name = scanner.nextLine();
System.out.println("입력된 이름: " + name);
}
}
설명:
new Scanner(System.in)
: 키보드 입력을 처리하는Scanner
객체 생성.nextLine()
: 사용자가 입력한 한 줄의 문자열을 읽어들임.
주요 Scanner
메서드
1. next()
: 단어(문자열) 입력 받기
next()
메서드는 입력된 첫 번째 단어를 읽어들입니다. **공백(스페이스, 탭, 줄바꿈)**을 기준으로 단어를 분리합니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 단어 입력 받기
System.out.print("단어를 입력하세요: ");
String word = scanner.next();
System.out.println("입력된 단어: " + word);
}
}
설명:
next()
는 첫 번째 단어만 읽어오며, 공백 이후의 입력은 무시합니다.
2. nextLine()
: 한 줄 입력 받기
nextLine()
메서드는 입력된 한 줄을 읽어들입니다. 줄바꿈(Enter
)을 기준으로 입력을 분리합니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 한 줄 입력 받기
System.out.print("한 줄을 입력하세요: ");
String line = scanner.nextLine();
System.out.println("입력된 줄: " + line);
}
}
설명:
nextLine()
은 줄 전체를 읽어들입니다. 공백을 포함한 모든 문자를 읽고 줄바꿈이 입력되면 종료합니다.
3. nextInt()
: 정수 입력 받기
nextInt()
메서드는 정수형 데이터를 입력받습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 정수 입력 받기
System.out.print("정수를 입력하세요: ");
int number = scanner.nextInt();
System.out.println("입력된 정수: " + number);
}
}
설명:
nextInt()
는 정수형 값만 읽어들입니다.- 만약 정수가 아닌 값을 입력하면 InputMismatchException 예외가 발생합니다.
4. nextDouble()
: 실수 입력 받기
nextDouble()
메서드는 실수형(double) 데이터를 입력받습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 실수 입력 받기
System.out.print("실수를 입력하세요: ");
double value = scanner.nextDouble();
System.out.println("입력된 실수: " + value);
}
}
설명:
nextDouble()
은 소수점을 포함한 실수형 데이터를 입력받습니다.- 마찬가지로 실수가 아닌 값을 입력하면 InputMismatchException이 발생합니다.
5. nextBoolean()
: 불리언 값 입력 받기
nextBoolean()
메서드는 true
또는 false
값을
입력받습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 불리언 값 입력 받기
System.out.print("참 또는 거짓을 입력하세요(true/false): ");
boolean boolValue = scanner.nextBoolean();
System.out.println("입력된 값: " + boolValue);
}
}
설명:
nextBoolean()
은true
또는false
문자열만 인식하며, 다른 값을 입력하면 예외가 발생합니다.
6. hasNext()
: 다음 입력이 있는지 확인
hasNext()
메서드는 입력 소스에서 다음 입력이 존재하는지를 확인합니다. 만약 입력이 더 이상 없으면 false
를
반환합니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 입력이 있는 동안 계속 단어 출력
while (scanner.hasNext()) {
String word = scanner.next();
System.out.println("입력된 단어: " + word);
}
}
}
설명:
hasNext()
는 입력 소스에 다음 입력이 있는지 여부를 확인하여 반복 처리할 때 유용합니다.
7. hasNextInt()
, hasNextDouble()
: 특정 타입의 입력이 있는지 확인
hasNextInt()
: 정수형 데이터가 있는지 확인합니다.hasNextDouble()
: 실수형 데이터가 있는지 확인합니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 정수 입력 여부 확인
System.out.print("정수를 입력하세요: ");
if (scanner.hasNextInt()) {
int number = scanner.nextInt();
System.out.println("입력된 정수: " + number);
} else {
System.out.println("정수가 아닙니다.");
}
}
}
설명:
- 입력된 데이터가 정수 또는 실수인지 확인한 후 처리할 수 있습니다.
8. useDelimiter()
: 사용자 정의 구분자 설정
useDelimiter()
메서드는 기본 구분자(공백, 탭, 줄바꿈) 대신 사용자 정의 구분자를 설정하여
데이터를 입력받을 수 있습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String input = "Apple,Banana,Orange";
Scanner scanner = new Scanner(input);
// 구분자를 쉼표(,)로 설정
scanner.useDelimiter(",");
// 각 항목 출력
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
}
}
출력:
Apple
Banana
Orange
설명:
useDelimiter()
메서드를 사용하면 사용자 정의 구분자를 통해 데이터를 분리할 수 있습니다.
9. close()
: Scanner 닫기
close()
메서드는 Scanner
객체를 닫고 더 이상 입력을 받을 수 없도록 합니다. 자원 관리를
위해 필요할 때 Scanner
를 닫아야 합니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("이름을 입력하세요: ");
String name = scanner.nextLine();
// Scanner 객체 닫기
scanner.close();
System.out.println("입력된 이름: " + name);
}
}
설명:
close()
메서드는 더 이상 입력을 받지 않도록Scanner
를 종료합니다. 주로 파일 입력을 다룰 때 자원을 반환하기 위해 사용합니다.
10. nextLong()
, nextFloat()
: 다양한 숫자형 입력 받기
Scanner
는 long, float 등의 숫자형 데이터도 입력받을 수 있는 메서드를 제공합니다.
nextLong()
: long 타입의 정수를 입력받습니다.nextFloat()
: float 타입의 실수를 입력받습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// long 타입 입력 받기
System.out.print("
긴 정수를 입력하세요: ");
long longValue = scanner.nextLong();
System.out.println("입력된 긴 정수: " + longValue);
// float 타입 입력 받기
System.out.print("실수를 입력하세요: ");
float floatValue = scanner.nextFloat();
System.out.println("입력된 실수: " + floatValue);
}
}
요약
자바의 Scanner
클래스는 입력 소스로부터 다양한 데이터 타입을 쉽게 읽을 수 있는 메서드들을 제공합니다.
주요 메서드는 다음과 같습니다:
next()
: 한 단어(공백 전까지)를 입력받음nextLine()
: 한 줄 전체를 입력받음nextInt()
,nextDouble()
,nextBoolean()
: 정수, 실수, 불리언 값 입력받음hasNext()
,hasNextInt()
: 다음 입력이 있는지 확인useDelimiter()
: 사용자 정의 구분자를 설정close()
: 입력 스트림을 닫음
이러한 메서드들을 활용하여 키보드, 파일, 문자열 등 다양한 입력 소스로부터 데이터를 쉽게 처리할 수 있습니다.