質問編集履歴

1

コード内容、質問内容を少し変更しました。

2021/07/18 11:11

投稿

K.M.PEANUTS
K.M.PEANUTS

スコア40

test CHANGED
@@ -1 +1 @@
1
- javaを使ってcsvファイルからデータを読み込み、計算して別ファイルへ出力した
1
+ javaを使ってcsvファイルからデータを読み込めな
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  public static void main(String[] args) {
10
10
 
11
- readData rd = new readData();
11
+ readData[] rd = new readData[6];
12
12
 
13
13
  readDataBook rdbook = new readDataBook();
14
14
 
@@ -50,7 +50,7 @@
50
50
 
51
51
  public class readAndWrite {
52
52
 
53
- public void read(readData rd, readDataBook rdbook) {
53
+ public void read(readData[] rd, readDataBook rdbook) {
54
54
 
55
55
  try(FileReader fr = new FileReader("data.csv")) {
56
56
 
@@ -70,19 +70,19 @@
70
70
 
71
71
  data = line.split(",");
72
72
 
73
- rd.setReadDataName(data[0]);
73
+ rd[i].setReadDataName(data[0]);
74
-
74
+
75
- rd.setReadDataJapanese(data[1]);
75
+ rd[i].setReadDataJapanese(data[1]);
76
-
76
+
77
- rd.setReadDataMath(data[2]);
77
+ rd[i].setReadDataMath(data[2]);
78
-
78
+
79
- rd.setReadDataEnglish(data[3]);
79
+ rd[i].setReadDataEnglish(data[3]);
80
-
80
+
81
- rd.setReadDataScience(data[4]);
81
+ rd[i].setReadDataScience(data[4]);
82
-
82
+
83
- rd.setReadDataSocial(data[5]);
83
+ rd[i].setReadDataSocial(data[5]);
84
-
84
+
85
- rdbook.addReadDataBook(rd);
85
+ rdbook.addReadDataBook(rd[i]);
86
86
 
87
87
  line = reader.readLine();
88
88
 
@@ -154,6 +154,8 @@
154
154
 
155
155
 
156
156
 
157
+
158
+
157
159
  ```
158
160
 
159
161
  ```java
@@ -542,12 +544,24 @@
542
544
 
543
545
  ```
544
546
 
547
+
548
+
549
+ ### やりたいこと
550
+
551
+ csvファイルから6人分のデータを読み込み、readDataクラスのフィールドに値を代入したのちに、readDataBookクラスの配列に格納したいです。
552
+
553
+
554
+
545
555
  ### 起きている問題
546
556
 
557
+ masaki,86,75,94,73,83
558
+
559
+ Exception in thread "main" java.lang.NullPointerException: Cannot invoke "readData.readData.setReadDataName(String)" because "<parameter1>[<local5>]" is null
560
+
561
+ at readAndWrite.read(readAndWrite.java:17)
562
+
563
+ at Main.main(Main.java:9)
564
+
565
+
566
+
547
- csvファイルには6のデータ格納しており、『1行読み込んreadDataに格納してからreadDataBookの配列の要素にする』動作を繰り返すプログラムを書いたつもりなのですが、6人目の結果しか表示されません。何が問題なのでしょうか?
567
+ のデータはおそらく格納でいるかとうのですが、2行目のデータ読み込みのところでStringがnullだと言わてい。何が原因でしょうか?
548
-
549
- ### 試したこと
550
-
551
- Main.javaのreadData rdをreadData[6]型配列にして、readDataインスタンスを6個作ってそれぞれにcsvファイルの結果を代入し、それらのインスタンスをreadDataBookにまとめるプログラムも書いた。
552
-
553
- しかしこちらのコードはインスタンスを6個作る必要性について納得できず、例外処理も発生したためやめました。