このブログを検索

2019年6月10日月曜日

やさしいjava 6版 Lesson4 練習問題 5 "メソッド作成"、"テキストに出力"

やさしいjava 6版
「Lesson4」 練習問題 5を

「Java入門教室」
 に記載してあった ”汎用性のあるメソッド”を使った物を使って
 作ってみよう。
 
 また、txtに 出力させてみよう。

 元々の問題は 科目1~5 の点数を入力して、5科目の合計点と 平均点を表示するもの。


🌟練習問題 4-5

import java.io.*;

class SampleP5_4
{
    static int[] test = new int[5];  //フィールド クラス変数 各点数入力用
    static String[] curriculum = {"国語", "算数", "理科", "社会", "外国語"}; //クラス変数 教科名
    static String comm1 = "の点数は?";  //クラス変数 教科名 + "の点数は?"
    static int sum = 0;              //クラス変数 合計点
    static int max = 0;              //クラス変数 最高点
    
    public static void main(String[] args)
    {
        System.out.println("5科目のテストの点数を入力して下さい。(0〜100点)");
        calcTest(); //点数の入力と集計
        testOutput(); //txtに書き込み
    }
    
    public static void calcTest()
    {
        for(int i=0; i<test.length; i++){
            test[i] = input(curriculum[i] + comm1);
        }
        //test[0] = input(" 国語" + comm1);
        //test[1] = input(" 算数" + comm1);
        //test[2] = input(" 理科" + comm1);
        //test[3] = input(" 社会" + comm1);
        //test[4] = input(" 外国語" + comm1);
        
        for(int i=0; i<test.length; i++){  //合計点・最高点 の計算。
            sum += test[i];
            if(max<test[i]) max = test[i];
        }
        
        System.out.println("5科目の合計点は" + sum + "点です。");
        System.out.println("5科目の平均点は" + (sum / (double)test.length) + "点です。");
        System.out.println("最高点は" + max + "点です。");
    }
    
    public static void testOutput()
    {
        try{
            PrintWriter pw = new PrintWriter
            (new BufferedWriter(new FileWriter("test.txt")));
            
            for(int i=0; i<test.length; i++){
                pw.println(curriculum[i] + "の点数は" + test[i] + "点です。");
            }
            pw.println("5科目の合計点は" + sum + "点です。");
            pw.println("5科目の平均点は" + (sum / (double)test.length) + "点です。");
            pw.println("最高点は" + max + "点です。");
            System.out.println("test.txt に書き込みました。");
            
            pw.close();
        }catch(IOException e){
            System.out.println("入出力エラーです。");
        }
    }
    
    public static int input(String txt)
    {
        System.out.println(txt);
        
        BufferedReader br =
         new BufferedReader(new InputStreamReader(System.in));
        String str = null; //入力用 初期化 null
        int num = 0;       //入力用
        
        try{
            str = br.readLine();
        }catch(IOException e){
            System.out.println("入出力エラーです。");
        }
        
        try{
            num = Integer.parseInt(str);
        }catch(Exception e){
            System.out.println("数値以外が入力されました。 0点を代入します。");
            num = 0;
        }
        
        if(num<0 || num>100){  //入力した点数の確認
            System.out.println("0点から 100点で入力して下さい。");
            num = 0;
        }
        
        return num;
    }

}

とりあえず、txtに出力できた。。

今日の教訓
 クラスを分けたらどうなるのかな。
 考えてみよう。

0 件のコメント:

コメントを投稿