連載
» 2006年04月21日 00時00分 公開

EclipseでJavaの入出力を理解するEclipseでJavaに強くなる(2)(2/4 ページ)

[小山博史,@IT]

ユーザー入力に対応するプログラム

 それでは、標準入力と標準出力を使ってユーザー入力に対応するプログラムとして、キーボードから入力されるユーザー名をプログラム側で受け取り、これを加工してコンソールにメッセージとして表示する「あいさつプログラム」を作成してみましょう。

 これを実現する方法の1つとして、java.lang.Systemクラスのフィールドinとjava.io.BufferedReaderクラスのreadLine()メソッドとを利用する方法があります。今回はこれを使ってみましょう。標準入力を使用するjava.io.BufferedReaderのインスタンスを生成するためには、次のようにコーディングします。java.lang.SystemクラスはSystemと省略できる点に注意してください。

java.io.BufferedReader in =
   new java.io.BufferedReader(
     new java.io.InputStreamReader(System.in));

 これは初心者のうちは決まりきった書き方だと思って使って構いません。簡単に解説をすると、java.io.InputStreamReaderクラスは、文字列データが流れている入力ストリームを使用するときに使うクラスです。この文字列データストリームをバッファリングする機能を追加したい場合に、java.io.BufferedReaderクラスを使います。こうすることで、キーボードからの入力を受け付けることができるようになります。

 次に、入力されるユーザーの名前を読み込むためには、readLineメソッドを使ってコーディングします。ただし、ここでinはjava.io.BufferedReader型の変数だとします。

String line = in.readLine();
in.close();

 readLineメソッドは1行の文字列を読み込みます。もしストリームの終わりに達している場合、つまりデータがない場合は nullが返ります。次にinは使い終わったということでcloseメソッドを呼びます。このプログラムでは、1行読み込んだ後はもうこのストリームからデータを読み込まないからです。このように使い終わったjava.io.BufferedReader型の変数は必ずcloseするようにして、Java仮想マシンが無駄にストリーム用にリソースを確保し続けることがないようにしましょう。

 このようにプログラムすると、例えばコンソール画面でユーザーが文字列「ABC」を入力して[Enter]キーを入力すると、「ABC」がString型のオブジェクトとしてin.readLine()から返ってきてlineへ代入されます。ただし、ここには[Enter]キーで入力される制御コードの改行コードや復帰コードは含まれていません。

 次に、ディスプレイへのプロンプト表示や入力された値に対応した返事の表示をするために、java.lang.Systemクラスのフィールドoutと、java.lang.PrintStreamクラスのprintメソッドやprintlnメソッドを使います。具体的には、System.out.print("Input name:")と、入力された値により返事を表示するためのSystem.out.println("Hello, "+name);という処理を追加します。コンソール画面へ文字列を出力するには、このようにjava.lang.Systemクラスのoutフィールドのメソッドであるprintやprintlnを使います。printとprintlnの違いは、出力データに改行のための制御コードを付加しないか、付加するかという点にあります。

System.out.print("Input name:");
  (略)
System.out.println("Hello, "+name);

 以上解説したとおりjava.ioパッケージのあるクラスを使えばデータ入出力ができます。この点をしっかり覚えておきましょう。「あいさつプログラム」を作成するのに必要な文法事項の解説はこれでおしまいです。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。