Console 클래스란?
Java의 Console 클래스는 콘솔(키보드/화면) 장치로부터 데이터를 읽고 쓰는 데 사용되는 클래스입니다. 이 클래스는 키보드로부터 한 줄의 입력을 읽어들이는 readLine() 메서드를 제공하며, System.console() 메서드를 호출하여 Console 객체를 얻을 수 있습니다.
참고 − IDE와 같은 비대화형(non-interactive) 환경에서 이 프로그램을 실행하면 정상적으로 동작하지 않습니다. Console 클래스는 명령 프롬프트나 터미널과 같은 대화형 환경에서만 사용할 수 있기 때문입니다.
예제 코드
다음 Java 프로그램은 Console 클래스를 사용하여 사용자로부터 데이터를 입력받는 예제입니다.
import java.io.BufferedReader;
import java.io.Console;
import java.io.IOException;
import java.io.InputStreamReader;
class Student {
String name;
int age;
float percent;
boolean isLocal;
char grade;
Student(String name, int age, float percent, boolean isLocal, char grade) {
this.name = name;
this.age = age;
this.percent = percent;
this.isLocal = isLocal;
this.grade = grade;
}
public void displayDetails() {
System.out.println("Details..............");
System.out.println("Name: "+this.name);
System.out.println("Age: "+this.age);
System.out.println("Percent: "+this.percent);
if(this.isLocal) {
System.out.println("Nationality: Indian");
} else {
System.out.println("Nationality: Foreigner");
}
System.out.println("Grade: "+this.grade);
}
}
public class ReadData {
public static void main(String args[]) throws IOException {
Console console = System.console();
if (console == null) {
System.out.println("Console is not supported");
System.exit(1);
}
System.out.println("Enter your name: ");
String name = console.readLine();
System.out.println("Enter your age: ");
int age = Integer.parseInt(console.readLine());
System.out.println("Enter your percent: ");
float percent = Float.parseFloat(console.readLine());
System.out.println("Are you local (enter true or false): ");
boolean isLocal = Boolean.parseBoolean(console.readLine());
System.out.println("Enter your grade(enter A, or, B or, C or, D): ");
char grade = console.readLine().toCharArray()[0];
Student std = new Student(name, age, percent, isLocal, grade);
std.displayDetails();
}
}코드 설명
위 코드의 핵심 흐름은 다음과 같습니다.
1. Console 객체 확인 − System.console()은 지원되지 않는 환경에서 null을 반환할 수 있습니다. 따라서 null 체크를 통해 안전하게 프로그램을 종료하도록 처리하는 것이 좋습니다.
2. readLine()으로 입력 받기 − readLine() 메서드는 항상 문자열(String)을 반환합니다. 따라서 숫자나 불리언 값이 필요한 경우 Integer.parseInt(), Float.parseFloat(), Boolean.parseBoolean() 같은 파싱 메서드를 사용해 적절한 타입으로 변환해야 합니다.
3. 문자(char) 입력 처리 − 한 글자를 입력받을 때는 console.readLine().toCharArray()[0]처럼 문자열을 문자 배열로 변환한 후 첫 번째 문자를 가져오는 방식을 사용합니다.
실행 결과
Enter your name: Krishna Enter your age: 26 Enter your percent: 86 Are you local (enter true or false): true Enter your grade(enter A, or, B or, C or, D): A Details.............. Name: Krishna Age: 26 Percent: 86.0 Nationality: Indian Grade: A
마무리
Console 클래스는 간단한 CLI(명령줄 인터페이스) 프로그램에서 사용자 입력을 처리할 때 유용합니다. 특히 readPassword() 메서드를 함께 사용하면 비밀번호 입력 시 화면에 문자가 표시되지 않도록 처리할 수 있다는 점도 기억해 두면 좋습니다. 다만 IDE 환경에서는 동작하지 않으므로, 반드시 터미널이나 명령 프롬프트에서 실행해야 한다는 점에 유의하세요.