入力先を指定して入力する方法


■ キーボードからの文字入力

キーボードから値を入力する最もシンプルな方法は、1文字づつプログラムに入力してくる方法です。それを実現するのが 、以下のような命令です。
     System.in.read();
しかし、通常1文字だけのデータは少なく、複数文字を入力して、復帰改行(エンター)すると、入力した文字がプログラムに渡されるという方が使いやすいです。 そこで、文字列を1行単位で入力するためには、次のようにキーボードの入力先を記述しておく必要があります。
	BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
これは、文字列入力先に kbd (keybordのつもり) という名前をつけて、それで文字列入力ができるということを宣言しています。入力先の名前は自分で自由に付けることができます。

テキストの3章に説明されているプログラムは、入力先を指定してデータを入力する典型的な例です。ここでは、この方法を使って、「名前」と「年齢」を入力し、その値を表示するプログラムを次に示します。

// 文字と数値を入力し、それを表示する。
import java.io.*;

public class JcInput1{
    public static void main(String arges[]) throws IOException {
	String name, age;
                   
	BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));

                  System.out.print("名前?");
                  name = kbd.readLine();
                  System.out.print("年齢?");
                  age = kbd.readLine();
                  
                  System.out.println("名前は"+name+"です。");
                  System.out.println("年齢は"+age+"です。");
    }
}

このプログラムで新しく使われている命令は、以下の3行です。

  1. import java.io.*; 

    入力先を指定して入力する方法を使う場合は、上記の命令を最初にいれておきます。

  2. throws IOException 

    「このプログラムでは、入力例外が発生する可能性があります」ということを表明する。

  3. BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));

    入力先(キーボード)の名前をkbdとする。

  4. name = kbd.readLine();
    入力先kbdからデータを入力し、nameに代入する。

上記のプログラムは、名前と年齢をそれぞれ入力し(アンダーラインの箇所)、下記のように出力します。
[egi@taro]$ java JcInput1
名前?egi
年齢?45
名前はegiです。
年齢は45です。
[egi@taro]$ 

■ 入力した数値を計算に使う

上記の方法による入力でも、入力された値はすべて文字列です。したがって、数値を入力して、その値を何らかの計算に使いたい場合は、文字列の数値を数値型に変換する必要があります。
次のプログラムは、身長を入力し、標準体重を計算して出力するプログラムです。
// 数値を入力し、計算結果を表示する。
import java.io.*;

public class JcInput2{
    public static void main(String[] arges) throws IOException {
	String  sincho;
	int dt;
                   
	BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));

                  System.out.print("身長?");
                  sincho = kbd.readLine();
                  dt = Integer.parseInt(sincho);
                  
                  System.out.println("身長は"+sincho+"です。");
                  System.out.println("標準体重は"+((dt-100)*0.9)+"です。");
    }
}


このプログラムで使われている、Integer.parseInt( )は、( )内に記述されたString型のデータをint型のデータに変換してくれます。

上記のプログラムを実行すると、「身長?」というメッセージが表示され、身長を 156と入力すると、次のように結果を出力してプログラムが終了します。

[egi@taro]$ java JcInput2
身長?156
身長は156です。
標準体重は50.4です。
[egi@taro]$ 

プログラミング / 江木