解答例 - 実習課題4 - 3.その他の入出力クラス
(実習課題4)
実習課題3のプログラムを改良しなさい。
- 結果の出力先を、コンソール・指定したファイルに切り替えられるようにしなさい。
- 出力先の指定はプログラム実行時の引数で指定する事。
解答例
/**
* StandardInputExample.java
* TECHSCORE Java 入出力3章 実習課題4
*
* Copyright (c) 2004 Four-Dimensional Data, Inc.
*/
package com.techscore.io.chapter3.exercise4;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
public class StandardInputExample {
public static void main(String[] args) {
try {
System.out.println("並び替える数字を入力してください");
System.out.println("終わるときは単にエンターを押してください");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String line;
ArrayList list = new ArrayList();
while (true) {
line = reader.readLine();
if ("".equals(line)) {
break;
}
//読み込んだ値をリストに追加
list.add(Integer.valueOf(line));
}
//リストをソートする
Collections.sort(list);
PrintStream out;
if (args.length > 0) {
//引数に出力ファイル名が指定されたときは、そのファイルに出力
out = new PrintStream(new FileOutputStream(args[0]));
} else {
//引数がないときは、標準出力
out = System.out;
}
out.println("ソート後");
for (int i = 0; i < list.size(); i++) {
out.println((Integer)list.get(i));
}
System.out.println("出力完了しました");
} catch (IOException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
System.out.println("半角数字で入力してください");
e.printStackTrace();
System.exit(0);
}
}
}

