前提・実現したいこと
Eclipseを使ってcsvファイルを読み取り、データをListに格納し、利用したいです。
csvファイルの中身は以下のようなものです。
クラス,生徒の姓名,科目,点数
1-1,山田太郎,国語,76
1-2,太田和弘,数学,87
(以下同様のデータが制限なく続く)
生徒の姓名に重複はなく、科目は生徒によって受けている、いないものがあります。
これを読み取りクラスで一行ずつ読み取り、Personクラスでそれぞれの生徒の合計点などを算出するメソッドを作り、以下のように出力したいです。
名前:山田太郎 合計点:412 科目数:5教科
発生している問題・エラーメッセージ
恐らくcsvファイルの読み込みは成功しているのですが、Listへの格納の仕方、そこから別のクラスでどう使えばいいのかさっぱりです。独学のためおかしい部分は多くあるかと思います。
該当のソースコード
java
1 2// 読み取りクラス 3public void schoolDate(){ 4 ArrayList<Student> csvdata = new ArrayList<Student>(); 5 6 File fl = new File("Test.csv"); 7 8 try (FileReader fr = new FileReader(fl): 9 BufferedReader in = new BufferedReader(fr)){ 10 11 String s; 12 while((s = in.readLine()) != null){ 13 // カンマ区切りでListに入れる? 14 } 15 } catch (IOException ex) { 16 ex.printStackTrace(); 17 } 18} 19 20// Personクラス 21public class Person { 22 23 private String class; 24 private String name; 25 private List<Subject> subjects = new ArrayList<Subject>(); 26 27 public Student(String _class, String _name){ 28 class = _class; 29 name = _name; 30 } 31 32 public int calcSum(){ 33 // 各生徒の合計点の算出 34 return sum; 35 } 36 37 // 以下アクセサメソッドなど 38}
試したこと
Studentクラスを作ってその中でどうにか引っ張ってこれないか
補足情報
休暇明けの講義で急に出た課題のため、Listや読み取りなどに対しての知識はほぼない状態で、見様見真似で書いています。Java初心者ですが、頂ける解答にできるだけついていけるよう、頑張りますのでよろしくお願いします。
(追記)swordone様
ご指摘ありがとうございます。「名前が重複しない」というのは、例えば山田太郎というnameがあれば、山田次郎は存在しないというような、同じ姓か名を持たない、という意味でした。誤解を与えてしまい、申し訳ありません。
Personクラスについては修正いたしました。ありがとうございます。
(追記)mo-monga様
subjectには受けた科目を格納したいと考えています。
データのサンプルは以下のようなものでよいでしょうか。
1-1,山田太郎,国語,76 1-2,太田和弘,数学,87 1-1,伊藤淳,理科,65 1-1,斎藤博,社会,57 1-3,田中郁美,理科,59 1-1,山田太郎,数学,45 1-3,柳瀬徹,英語,58 1-2,彦坂直樹,社会,82 1-3,田中郁美,国語,87
すみません。分からないことだらけのまま質問を投稿してしまったため、不愉快な思いをさせてしまいました。自分でも調べ、出来る限りこちらに追記していきます。
回答1件
あなたの回答
tips
プレビュー