Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Console 클래스로 키보드 입력 데이터 읽기

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 환경에서 콘솔 입력이 필요하다면 BufferedReaderInputStreamReader를 조합하거나 Scanner 클래스를 사용하는 것이 좋습니다.