解答例 - j2.lesson08.TotalInFile

package j2.lesson08;

import java.io.*;

/**
 * 課題2101 - 解答例.
 * ファイル内に一行ずつ書かれている整数を読み出し、その総和を表示するクラス.
 @author arakawa
 @version $Id: TotalInFile_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
 */
public class TotalInFile {

    /**
     * ファイル内に一行ずつ書かれている整数を読み出し、その総和を表示するプログラム。
     @param args 無視される
     @throws IOException 入出力例外が発生した場合
     */
    public static void main(String[] argsthrows IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        
        // print "ファイル名を入力:"
        System.out.print("ファイル名を入力:");
        // filename = コンソール入力 (String)
        String filename = reader.readLine();
        // file = filename のファイルを読み込み用に開く
        BufferedReader file;
        try {
            file = new BufferedReader(new FileReader(filename));
        }
        // if filename が開けない
        catch (FileNotFoundException e) {
            // print filename + "が開けませんでした。", 改行
            System.out.println(filename + "が開けませんでした。");
            // プログラムを終了
            return;
        }
        try {
            // total = 各行に書かれている整数の合計
            int total = 0;
            while (true) {
                String line = file.readLine();
                if (line == null) {
                    break;
                }
                try {
                    total += Integer.parseInt(line);
                }
                // if 数値に変換できない行がある
                catch (NumberFormatException e) {
                    // print "数値に変換できません。" + (変換できなかった文字列), 改行
                    System.out.println("数値に変換できません。" + line);
                    // プログラムを終了
                    return;
                }
            }
            // print "合計は" + total
            System.out.println("合計は" + total);
        }
        finally {
            file.close();
        }
    }
}