Java의 Console 클래스는 콘솔(키보드·화면) 장치와 데이터를 주고받을 때 사용합니다. 이 클래스는 키보드로부터 한 줄을 읽어 들이는 readLine() 메서드를 제공하며, System.console() 메서드를 호출하면 Console 객체를 얻을 수 있습니다.
참고 − 이 프로그램은 대화형(인터랙티브) 환경에서만 동작합니다. IDE처럼 콘솔이 연결되지 않은 비대화형 환경에서 실행하면 정상적으로 작동하지 않으므로, 반드시 명령 프롬프트(터미널)에서 실행해야 합니다.
주요 특징
- readLine(): 키보드로부터 한 줄의 문자열을 읽습니다.
- readLine(fmt, args): 서식을 지정한 안내 문구를 출력한 뒤 입력을 받습니다.
- readPassword(): 입력 내용이 화면에 표시되지 않아 비밀번호 입력에 적합합니다.
- format() / printf(): 콘솔에 서식 있는 문자열을 출력합니다.
예제
다음 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("상세 정보..............");
System.out.println("이름: " + this.name);
System.out.println("나이: " + this.age);
System.out.println("백분율: " + this.percent);
if(this.isLocal) {
System.out.println("국적: 내국인");
}else {
System.out.println("국적: 외국인");
}
System.out.println("등급: " + this.grade);
}
}
public class ReadData {
public static void main(String args[]) throws IOException {
Console console = System.console();
if (console == null) {
System.out.println("콘솔이 지원되지 않습니다");
System.exit(1);
}
System.out.println("이름을 입력하세요: ");
String name = console.readLine();
System.out.println("나이를 입력하세요: ");
int age = Integer.parseInt(console.readLine());
System.out.println("백분율을 입력하세요: ");
float percent = Float.parseFloat(console.readLine());
System.out.println("내국인입니까(true 또는 false 입력): ");
boolean isLocal = Boolean.parseBoolean(console.readLine());
System.out.println("등급을 입력하세요(A, B, C, D 중 하나): ");
char grade = console.readLine().toCharArray()[0];
Student std = new Student(name, age, percent, isLocal, grade);
std.displayDetails();
}
}실행 결과
이름을 입력하세요: Krishna 나이를 입력하세요: 26 백분율을 입력하세요: 86 내국인입니까(true 또는 false 입력): true 등급을 입력하세요(A, B, C, D 중 하나): A 상세 정보.............. 이름: Krishna 나이: 26 백분율: 86.0 국적: 내국인 등급: A
코드 해설
System.console()호출 결과가null인지 먼저 확인하여, 콘솔을 사용할 수 없는 환경에서 프로그램이 비정상 종료되지 않도록 처리했습니다.readLine()은 항상 문자열을 반환하므로, 숫자 입력이 필요한 경우Integer.parseInt(),Float.parseFloat()등으로 형 변환해야 합니다.- 불리언 값은
Boolean.parseBoolean()으로 변환하며, "true"가 아닌 모든 문자열은false로 처리됩니다. - 문자(char) 입력은
readLine().toCharArray()[0]처럼 첫 번째 문자만 추출하는 방식으로 처리할 수 있습니다.
IDE 환경에서 콘솔 입력이 필요하다면 BufferedReader와 InputStreamReader를 조합하거나 Scanner 클래스를 사용하는 것이 좋습니다.