解答例 - 実習課題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); } } }