Java
 Computer >> コンピューター >  >> プログラミング >> Java

【初心者向け】JavaのConsoleクラスでユーザー入力を読み取る方法をわかりやすく解説

Consoleクラスとは

Javaのjava.io.Consoleクラスは、コンソール(キーボード・画面)デバイスとデータのやり取りを行うためのクラスです。キーボードから1行分のテキストを読み取るreadLine()メソッドが提供されており、入力内容を画面に表示しないパスワード入力用のreadPassword()メソッドも用意されています。

Consoleクラスのインスタンスは、System.console()メソッドを呼び出すことで取得できます。

注意:Consoleクラスは、EclipseやIntelliJ IDEAなどのIDEのような非対話型環境では動作しません。これは、IDEが標準入出力をリダイレクトするため、システムコンソールにアクセスできなくなるからです。プログラムを実行する際は、コマンドプロンプト(Windows)やターミナル(macOS / Linux)などの対話型環境を使用してください。

サンプルコード

次のJavaプログラムは、Consoleクラスを使用してユーザーから名前・年齢・割合・国籍・成績の5つのデータを読み取り、Studentオブジェクトとして生成して詳細を表示します。

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();
    }
}

実行結果

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

ポイント解説

  • System.console() の null チェック:コンソールが利用できない環境では null が返されるため、実行前に必ず null チェックを行い、利用不可の場合はプログラムを終了させています。
  • readLine() の戻り値:このメソッドは常に文字列(String)を返します。そのため、数値として扱いたい場合は Integer.parseInt()Float.parseFloat() を使って変換する必要があります。
  • boolean の変換:Boolean.parseBoolean() は「true」(大文字小文字を問わない)以外の入力をすべて false として扱う点に注意しましょう。
  • char 型の読み取り:Consoleクラスには1文字だけを読み取るメソッドがないため、readLine().toCharArray()[0] のように、読み取った文字列の先頭1文字を取り出しています。

まとめ

Consoleクラスを使えば、Scannerクラスを使わずにシンプルな記述でユーザー入力を受け取れます。ただし、IDE上では動作しないため、動作確認は必ずターミナルやコマンドプロンプトから行ってください。特にパスワードなど機密性の高い入力を扱う場合は、readPassword() メソッドが活躍します。

  1. JavaでCSVファイルを読み込む方法|BufferedReaderによる基本的なデータ読み取り手順

    CSVとは「Comma Separated Values(カンマ区切り値)」の略で、テキスト形式のデータファイルの一種です。CSVファイルでは、1行ごとに複数の項目がカンマ(,)で区切られて記録されており、拡張子は「.csv」として保存されます。表形式のデータを扱う際に広く利用されている、シンプルで汎用性の高いフォーマットです。 JavaでCSVファイルを読み込む仕組み JavaでCSVファイルを読み込むには、BufferedReaderクラスのreadLine()メソッドを使用するのが基本的な方法です。このメソッドを使うと、ファイルの内容を1行ずつ順番に読み取ることができます。 読み取った各

  2. Javaでプロパティファイルからデータを読み取る方法を解説

    JavaのPropertiesクラスは、Hashtableクラスのサブクラスであり、永続化可能なプロパティの集合(プロパティセット)を表します。Propertiesオブジェクトはストリームへ保存したり、ストリームから読み込んだりすることができます。また、プロパティリスト内の各キーとそれに対応する値は、どちらも文字列型として扱われます。Javaでは、Propertiesファイルを使うことでアプリケーションの設定情報を外部化し、キーと値(key-value)のペアとして管理できます。Propertiesクラスが提供するload()メソッドを使用すると、.propertiesファイルに記述されたキー