キーボードからの入力
●キーボードから値を入力する
Javaではクラスファイルを用いることで、便利な機能を簡単に用いることが出来ます。 java.ioを用いることですでに存在するクラスを用いることにより、キーボードから値を入力することが出来ます。
キーボードから値を入力して、その内容を表示するサンプルプログラムは以下の通りです。
import java.io.*;//java.ioクラスをインポート
class keyboard
{
//メインメソッド
public static void main(String args[]) throws IOException {
System.out.println("キーボードから値を入力して下さい。");
//キーボードから値を受けとるメソッドを作成
BufferedReader atai = new BufferedReader(new InputStreamReader(System.in));
//BufferedReaderクラスのeadLine()メソッドを用いて
//1行分のデータをキーボードから読み込む
String data = atai.readLine();
System.out.println("入力したデータ:" +data);
}
}
importから存在するクラスをコード中に取りこむためのコマンドです。この場合クラスライブラリの java.io クラスのすべてをインポートします。インポート後は取りこんだメソッドが使用可能となります。java.io クラスの詳細使用方法に関しては別途解説しますので、ここでは java.io という名前のクラスをインポートすることによってキーボードから文字列を取りこむことが可能となるということだけ覚えていてください。
public static void main(String args[]) throws IOException {
上のコードは最初のmainメソッドに記述した内容で、IOExceptionは入出力例外の発生を教えるクラスです。throwsは例外処理を、そのメソッド内ではなく呼び出し元で処理します。throws IOExceptionから入出力エラーは、mainメソッドの呼び出し元で実行されます。
java.ioに含まれるクラスBufferedReaderを用いることで、文字列を入力できます。この時、InputStreamReaderを用いることにより、バイトデータを指定されたcharsetを使用して変換します。この時、変換効率を最高にするために、以下のコードを用います。
BufferedReader atai = new BufferedReader(new InputStreamReader(System.in));
次に、下のコードにより入力されたキーボードの値をキーボードから読み込みます。このコードが以下の通りになります。インスタンス化されたataiに、メソッドBufferedReader内のメソッドreadLineを読み込みます。readLineは、1行のテキストを読み込みます。
String data = atai.readLine();
このdataを最後のプログラムで表示しています。実行結果は以下のようになります。
D:\private\java>javac keyboard.java
D:\private\java>java keyboard
キーボードから値を入力して下さい。
あいねこの館
入力したデータ:あいねこの館
詳しい使い方は、Sunのクラス BufferedReaderを参照してください。
●try catch構文を使った場合
先ほどはを用いることにより入出力のエラーは呼び出し元まかせでしたが、今度は内部にエラー処理を記述してみます。
import java.io.*;//java.ioクラスをインポート
class keyboard
{
//メインメソッド
public static void main(String args[]){
System.out.println("キーボードから値を入力して下さい。");
//キーボードから値を受けとるメソッドを作成
BufferedReader atai = new BufferedReader(new InputStreamReader(System.in));
try{
//BufferedReaderクラスのeadLine()メソッドを用いて
//1行分のデータをキーボードから読み込む
String data = atai.readLine();
System.out.println("入力したデータ:" +data);
} catch (IOException e){
//入出力の例外の場合
System.err.println("I/Oエラー");
}
}
}
主な変更点はI/Oを用いているreadLine()を含む入出力が行われる箇所です。この箇所にtry〜catch構文を挟むことによりI/Oエラーが発生した時におけるエラー処理をします。try中にエラーが出た場合はcatchのエラーに合った場所に処理が移ります。ここでは、によりエラーを検出しています。
戻る
|