情報処理科2年「プログラミング」

実習課題2(csvファイルの読み込み)


 進め方

 ・解説を参考にテキストに書き込みながら、学習を進めてください

 ・ページ移動は、スライド左右の < > マークをクリック

 ・自宅でjavaの開発環境が整っている生徒は、
 通常の授業と同じように入力→コンパイル→実行を行ってください


・・・実習メニューへ戻る

支店ごとの2カ月分の売上データを読み、1月と2月の合計を求め、実行結果のように表示する。


処理条件

                

(1)売上データ(ka2.csv)を読み込んで変数に記憶する

                

(2)1月と2月の売上から合計を計算し、売上一覧表を表示する

                

(3)データにエラーはないものとする

問題分析

csvファイルとは
図のような項目ごとにカンマで区切られたテキストファイルです


プログラムを実行するには、プログラムファイルka2.javaとデータファイルka2.csvが必要です

プログラムファイルka2.javaは自分でJCPADに入力します


データファイルka2.csvは こちらからダウンロードしてください→ダウンロード

プログラムを実行する前にプログラムファイルka2.javaと同じフォルダにka2.csvを入れておいてください

csvとは

それでは、出力設計から始めます


(1)まず明細から設計します
文字データが入る場所にはS
数値データが入る場所にはdを
表示したい桁数だけ書きます

ただし、店舗名のところのsは
全角文字なのでs1つに2マス使います

(2)つぎに明細に合わせるように
小見出し、大見出しの順に記入していきます

このときも全角文字は2マス使って下さい
出力設計

つぎに、変数名を決めます


番号は変数名はban、データ型は整数型intとします

店舗名は変数名mei、データ型は文字型Stringとします

1月の売上は変数名tuki1、データ型は整数型intとします

2月の売上は変数名tuki2、データ型は整数型intとします

合計は変数名kei、データ型は整数型intとします
変数の設定

つぎに流れ図に処理の順番を記入します

流れ図が終わったら、変数名と流れ図を見ながらプログラムをコーディングします

テキストの流れ図の横に、書き込んでください


字が小さめですが、最後にコーディング全体の確認画面がありますので、まず流れ図との関係を見ておきましょう


緑色の部分は、例外処理の記述です

例外処理とは、読み込むデータにエラーがあったときのことですが

実習のデータにはエラーはありませんので、詳しくは後ほど勉強しましょう

最初に大見出しと小見出しを表示します

読み込むファイル名と読み込み方を指定します

繰り返しの条件が、読み込む1行が null(何もないということ)でない間にします

データは項目の区切りがカンマであることを指定します

カンマごとに読み込んだ値をそれぞれの変数に記憶します

1月と2月の売上を足して合計を求めます

明細を表示します

明細を表示する箇所は、systemu.out.printf を使います

printf のfはフォーマット=書式という意味で、書式を指定して表示することができます


出力設計と見比べてください

%1sは、文字1桁 %5sは文字5桁 %3dは数値3桁を表し、後ろで指定された変数の値が、前から順番に表示されます

次のようにコーディングされます・・確認!

¥マークが全角になっていますが、本当は半角です・・


テキストに書き込んでください(流れ図の横の枠に)


import java.io.*;
import java.util.Scanner;
public class ka2{
 public static void main(String[] args) throws IOException{
 System.out.println
     ("   売上一覧表    作成者×××");
 System.out.println
     ("  No  店舗名             1月       2月      合計");
 BufferedReader fileIn=
     new BufferedReader(new FileReader("ka2.csv"));
 String line;
 while((line=fileIn.readLine())!=null){
  String[] str=line.split(",");
  int ban=Integer.parseInt(str[0]);
      String mei=str[1];
        int tuki1=Integer.parseInt(str[2]);
        int tuki2=Integer.parseInt(str[3]);
        int kei=tuki1 + tuki2;
        System.out.printf("  %2s  %-5s   %,3d   %,3d   %,3d ¥n"
        ,ban,mei,tuki1,tuki2,kei);
    }
    fileIn.close();
  }
}