반응형
Java에서 명령줄(command line)을 통해 입력을 받는 방법은 여러 가지가 있지만, 가장 일반적인 방법은 Scanner
클래스를 사용하는 것입니다. 이 클래스를 사용하면 사용자로부터 다양한 형태의 입력을 쉽게 받을 수 있습니다. 여기서는 Scanner
클래스를 사용하여 명령줄에서 입력을 받는 방법을 설명하고, 예제를 제공합니다.
파일, 입력 스트림, 문자열 등 다양한 입력 소스로부터 데이터를 읽을 수 있습니다. Scanner
클래스는 공백을 기준으로 입력을 나누며, 정규 표현식을 사용하여 데이터를 구문 분석할 수 있습니다.
1. Scanner
클래스 사용법
- Scanner 객체 생성:
Scanner
객체를 생성하려면System.in
을 사용하여 입력 스트림을 지정합니다.
- 입력 받기:
- 다양한 메서드(
nextLine()
,nextInt()
,nextDouble()
등)를 사용하여 입력을 받을 수 있습니다.
- 다양한 메서드(
2. Scanner 클래스의 주요 메서드
- nextLine(): 입력된 라인 전체를 문자열로 반환합니다.
- next(): 다음 토큰(공백 전까지의 문자열)을 반환합니다.
- nextInt(): 다음 토큰을 int 형으로 반환합니다.
- nextDouble(): 다음 토큰을 double 형으로 반환합니다.
- nextBoolean(): 다음 토큰을 boolean 형으로 반환합니다.
- nextFloat(): 다음 토큰을 float 형으로 반환합니다.
- nextLong(): 다음 토큰을 long 형으로 반환합니다.
- hasNext(): 입력에 다음 토큰이 있는지 여부를 확인합니다.
- hasNextInt(): 다음 토큰이 int 형인지 여부를 확인합니다.
- hasNextDouble(): 다음 토큰이 double 형인지 여부를 확인합니다.
- close(): 스캐너를 닫아 사용한 리소스를 해제합니다.
3. 예제: 사용자로부터 이름과 나이를 입력받아 출력하는 프로그램
아래 예제는 사용자로부터 이름과 나이를 입력받아 출력하는 간단한 프로그램입니다.
import java.util.Scanner;
public class CommandLineInputExample {
public static void main(String[] args) {
// Scanner 객체 생성
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("Hello, " + name + "! You are " + age + " years old.");
// Scanner 객체 닫기
scanner.close();
}
}
4. 설명
- Scanner 객체 생성:
Scanner scanner = new Scanner(System.in);
를 통해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("Hello, " + name + "! You are " + age + " years old.");
를 사용하여 입력 받은 이름과 나이를 출력합니다.
- Scanner 객체 닫기:
scanner.close();
를 통해Scanner
객체를 닫아줍니다. 이는 더 이상 입력이 필요하지 않을 때 자원을 해제하기 위해 사용됩니다.
5. 추가 예제: 다양한 타입의 입력 받기
아래 예제는 사용자로부터 다양한 타입의 데이터를 입력받아 출력하는 프로그램입니다.
import java.util.Scanner;
public class CommandLineInputExample2 {
public static void main(String[] args) {
// Scanner 객체 생성
Scanner scanner = new Scanner(System.in);
// 문자열 입력 받기
System.out.print("Enter a string: ");
String str = scanner.nextLine();
// 정수 입력 받기
System.out.print("Enter an integer: ");
int integer = scanner.nextInt();
// 실수 입력 받기
System.out.print("Enter a double: ");
double dbl = scanner.nextDouble();
// 불리언 입력 받기
System.out.print("Enter a boolean: ");
boolean bool = scanner.nextBoolean();
// 입력 받은 내용 출력
System.out.println("String: " + str);
System.out.println("Integer: " + integer);
System.out.println("Double: " + dbl);
System.out.println("Boolean: " + bool);
// Scanner 객체 닫기
scanner.close();
}
}
6. 추가 예제
- 기본 입력 읽기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name + "!");
}
}
- 정수 입력 읽기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter an integer: ");
int number = scanner.nextInt();
System.out.println("You entered: " + number);
}
}
- 파일에서 입력 읽기
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class Main {
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) {
e.printStackTrace();
}
}
}
7. 유의사항
Scanner
클래스는 입력을 읽을 때 블로킹될 수 있으므로, 입력을 기다리는 동안 프로그램 실행이 멈출 수 있습니다.- 잘못된 형식의 입력이 들어오면
InputMismatchException
이 발생할 수 있습니다. 이 경우 예외 처리를 통해 오류를 처리해야 합니다. Scanner
객체를 사용한 후에는 반드시close()
메서드를 호출하여 리소스를 해제해야 합니다. 특히 파일이나 네트워크 입력을 읽을 때는 중요합니다.
위의 예제와 설명을 통해 java.util.Scanner
클래스를 사용하는 방법을 이해하고, 다양한 입력 소스에서 데이터를 읽고 구문 분석할 수 있습니다.
반응형
'언어 > Java' 카테고리의 다른 글
[ Java ] swing 라이브러리 간단하게 사용해 보기 (0) | 2024.07.31 |
---|---|
[ Java ] args를 통한 command line 입력 받기 (0) | 2024.07.31 |
[ Java ] arraycopy()를 사용해서 배열 복사하기 (0) | 2024.07.31 |
[ Java ] 가변 배열을 생성하고 사용하기 (0) | 2024.07.31 |
[ Java ] 다차원 배열을 사용하는 예제 (0) | 2024.07.31 |