/* * 練習問題13.4 p.274 * "type value"形式の行を持つ入力文字列を読み込むプログラムを書きなさい。 * typeは、ラッパークラス名(Boolean, Characterなど)の1つであり、valueはその型のコンストラクタが変換できる文字列です。 * 各行に対して、指定された値を持つ、指定された型のオブジェクトを生成してArrayListに追加しなさい(ArrayList * については、512頁の「ArrayList」を参照)。全ての行が読みこまれたら、最終結果を表示しなさい。 * 各行は、単純に改行文字'\n'で終了していると想定しなさい。 */ package ch13.ex13_04; import java.io.*; import java.util.ArrayList; public class Input { ArrayList<Object> arrayList = new ArrayList<Object>(); public void inputToArray(String filename) { String[] tmp = new String[2]; // 分割された一行が入る FileReader f; BufferedReader b; String row; try { f = new FileReader(filename); b = new BufferedReader(f); while ((row = b.readLine()) != null) { tmp = row.split(" "); addArrayList(tmp[0], tmp[1]); } } catch (Exception e) { System.out.println(e); } } public void addArrayList(String type, String value) { if (type.equals("Integer")) { arrayList.add(new Integer(value)); } else if (type.equals("Short")) { arrayList.add(new Short(value)); } else if (type.equals("Long")) { arrayList.add(new Long(value)); } else if (type.equals("Byte")) { arrayList.add(new Byte(value)); } else if (type.equals("Float")) { arrayList.add(new Float(value)); } else if (type.equals("Double")) { arrayList.add(new Double(value)); } else if (type.equals("Boolean")) { arrayList.add(new Boolean(value)); } else if (type.equals("Character")) { arrayList.add(new Character(value.toCharArray().clone()[0])); } else { throw new IllegalArgumentException("Error in addArrayList"); } } public void showAllArray() { for (int i = 0; i < arrayList.size(); i++) { System.out.println("Class: " + arrayList.get(i).getClass().getName() + ", value: " + arrayList.get(i)); } } /** * @param args */ public static void main(String[] args) { Input test = new Input(); test.inputToArray("JPL/ch13/ex13_04/input_data.dat"); test.showAllArray(); } }