【初心者向け】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() メソッドが活躍します。
-
JavaでCSVファイルを読み込む方法|BufferedReaderによる基本的なデータ読み取り手順
CSVとは「Comma Separated Values(カンマ区切り値)」の略で、テキスト形式のデータファイルの一種です。CSVファイルでは、1行ごとに複数の項目がカンマ(,)で区切られて記録されており、拡張子は「.csv」として保存されます。表形式のデータを扱う際に広く利用されている、シンプルで汎用性の高いフォーマットです。 JavaでCSVファイルを読み込む仕組み JavaでCSVファイルを読み込むには、BufferedReaderクラスのreadLine()メソッドを使用するのが基本的な方法です。このメソッドを使うと、ファイルの内容を1行ずつ順番に読み取ることができます。 読み取った各
-
Javaでプロパティファイルからデータを読み取る方法を解説
JavaのPropertiesクラスは、Hashtableクラスのサブクラスであり、永続化可能なプロパティの集合(プロパティセット)を表します。Propertiesオブジェクトはストリームへ保存したり、ストリームから読み込んだりすることができます。また、プロパティリスト内の各キーとそれに対応する値は、どちらも文字列型として扱われます。Javaでは、Propertiesファイルを使うことでアプリケーションの設定情報を外部化し、キーと値(key-value)のペアとして管理できます。Propertiesクラスが提供するload()メソッドを使用すると、.propertiesファイルに記述されたキー