計算機プログラミングI

ファイルから人物データを読み、表示するプログラム

このプログラムを実行するためには Person クラスを定義しておく必要がある。


// 人物データを読んで表示するプログラム: Personクラスを使用

// 以下の宣言をクラス定義の前に書いておくと、
// java.io.BufferedReaderをBufferedReaderと略記できる。
import java.io.BufferedReader;

class ReadAndShow {

  public static void main(String[] args) {

    // "members"という名前のファイルから読む準備
    BufferedReader input;
    try {
      input = new BufferedReader
		(new java.io.InputStreamReader
		 (new java.io.FileInputStream("members")));
    } catch (Exception e) {
      input = null; // ファイルが見つからなかった場合
    }

    // 最初に人数が書いてあるのでそれを読んで捨てる
    int numberOfPersons = readInteger(input);
    Person p = readPerson(input); // ファイルから人物データを読む
    System.out.println(personToString(p)); // データを表示する

  }

  // ファイルから1行読んで文字列として返す
  static String readLine(BufferedReader input) {
    try {
      return input.readLine();	// 1行読む
    } catch (Exception e) {
      return "";		// 正しくない場合は空文字列にする
    }
  }

  // ファイルから1行読んで整数に変換して返す
  static int readInteger(BufferedReader input) {
    // Integer.parseInt(x) は string x を整数に変換する
    return Integer.parseInt(readLine(input));
  }

  // ファイルから1行読んで実数に変換して返す
  static double readDouble(BufferedReader input) {
    // new Double(x) は文字列xから実数オブジェクトを作る
    // doubleValueメソッドは、実数オブジェクトから実数値をとり出す
    return new Double(readLine(input)).doubleValue();
  }

  // ファイルから人物データを1人分読んでPersonオブジェクトを作って返す
  static Person readPerson(BufferedReader input) {
    Person p = new Person(); // Personオブジェクトを作る
    // 以下、人物の各情報を読んでPersonオブジェクトの中にセットする
    p.name = readLine(input);	       // 名前
    p.birthYear = readInteger(input);  // 生まれた年
    p.birthMonth = readInteger(input); // 生まれた月
    p.birthDate = readInteger(input);  // 生まれた日
    p.height = readDouble(input);      // 身長
    p.weight = readDouble(input);      // 体重
    return p;    // 完成したオブジェクトを返す
  }

  // 人物データを表示する
  static String personToString(Person p) {
    return ("名前: " + p.name +
	    ", 誕生日:" + p.birthYear + "-" + p.birthMonth +
	    "-" + p.birthDate +
	    ", 身長:" + p.height + ", 体重:" + p.weight);
  }
}


Hidehiko Masuhara, November 2000