java
1import java.io.*; 2import java.util.*; 3import java.nio.file.*; 4import readData.*; 5 6public class readAndWrite { 7 public void read(readData rd, readDataBook rdbook) { 8 try(FileReader fr = new FileReader("data.csv")) { 9 BufferedReader reader = new BufferedReader(fr); 10 String line; 11 line = reader.readLine(); 12 while (line != null) { 13 System.out.println(line); 14 rd.setReadData(line); 15 rdbook.addReadDataBook(rd); 16 line = reader.readLine(); 17 } 18 }catch(FileNotFoundException e) { 19 System.out.println("File not found"); 20 }catch(IOException e) { 21 System.out.println(e); 22 } 23 } 24 25 public void write(int num, readDataBook book) { 26 try (PrintWriter w = new PrintWriter( 27 new BufferedWriter( 28 new FileWriter("out.txt")))) { 29 //各教科の平均点を書き出す 30 w.println(book.japaneseAverage()); 31 w.println(book.mathAverage()); 32 w.println(book.englishAverage()); 33 w.println(book.scienceAverage()); 34 w.println(book.socialAverage()); 35 36 //5教科平均点を書き出す 37 w.println(book.fiveAverage()); 38 39 //5教科合計の1位を書き出す 40 w.println("1位 " + book.fiveWinPerson() + " " + book.fiveWinScore()); 41 42 43 } catch(IOException e) { 44 System.out.println(e); 45 } 46 } 47 48} 49
java
1package readData; 2 3public class readData { 4 5 public String name; 6 public int japanese; 7 public int math; 8 public int english; 9 public int science; 10 public int social; 11 12 public void setReadData(String n, int j, int m, int e, int sc, int so) { 13 this.name = n; 14 this.japanese = j; 15 this.math = m; 16 this.english = e; 17 this.science = sc; 18 this.social = so; 19 } 20 21 public String getName() { 22 return this.name; 23 } 24 25 public int getJapanese() { 26 return this.japanese; 27 } 28 29 public int getMath() { 30 return this.math; 31 } 32 33 public int getEnglish() { 34 return this.english; 35 } 36 37 public int getScience() { 38 return this.science; 39 } 40 41 public int getSocial() { 42 return this.social; 43 } 44 45 public int getSum() { 46 int sum; 47 sum = this.japanese + this.math + this.english + this.science + this.social; 48 return sum; 49 } 50 51 public double getAverage() { 52 int sum; 53 double ave; 54 sum = this.getSum(); 55 ave = (double)sum / 5; 56 return ave; 57 } 58} 59
java
1package readData; 2 3public class readDataBook { 4 readData[] list = new readData[10]; 5 int num = 0; 6 7 //読み込んだデータを配列に格納する 8 public void addReadDataBook(readData r) { 9 list[num] = r; 10 num++; 11 } 12 //何人分のデータが格納されているかを返す 13 public int getNum() { 14 return this.num; 15 } 16 17 //各教科の平均点を返す 18 public double japaneseAverage() { 19 int sum = 0; 20 double ave; 21 for(int i=0; i<num; i++) { 22 sum += list[i].getJapanese(); 23 } 24 return ave = sum / num; 25 } 26 27 public double mathAverage() { 28 int sum = 0; 29 double ave; 30 for(int i=0; i<num; i++) { 31 sum += list[i].getMath(); 32 } 33 return ave = sum / num; 34 } 35 36 public double englishAverage() { 37 int sum = 0; 38 double ave; 39 for(int i=0; i<num; i++) { 40 sum += list[i].getEnglish(); 41 } 42 return ave = sum / num; 43 } 44 45 public double scienceAverage() { 46 int sum = 0; 47 double ave; 48 for(int i=0; i<num; i++) { 49 sum += list[i].getScience(); 50 } 51 return ave = sum / num; 52 } 53 54 public double socialAverage() { 55 int sum = 0; 56 double ave; 57 for(int i=0; i<num; i++) { 58 sum += list[i].getSocial(); 59 } 60 return ave = sum / num; 61 } 62 63 //5教科の平均点を返す 64 public double fiveAverage() { 65 int sum = 0; 66 double fiveave; 67 for(int i=0; i<num; i++) { 68 sum += list[i].getSum(); 69 } 70 fiveave = (double)sum / num; 71 return fiveave; 72 } 73 74 //5教科の1位の人を返す 75 public String fiveWinPerson() { 76 int winner = 0, rt = 0; 77 for(int i=0; i<num; i++) { 78 if(winner < list[i].getSum()) { 79 winner = list[i].getSum(); 80 rt = i; 81 } 82 } 83 return list[rt].name; 84 } 85 86 //5教科の1位の得点を返す 87 public int fiveWinScore() { 88 int winner = 0, rt = 0; 89 for(int i=0; i<num; i++) { 90 if(winner < list[i].getSum()) { 91 winner = list[i].getSum(); 92 rt = i; 93 } 94 } 95 return list[rt].getSum(); 96 } 97 98}
csv
1masaki,86,75,94,73,83 2nobuyuki,91,89,96,88,94 3hironobu,60,54,36,59,43 4syuji,71,68,69,71,71 5masayasu,42,31,56,42,38 6toshiaki,66,57,63,59,68
やりたいこと
readAndWriteクラスでdata.csvを1行ずつ読み込み、readDataクラスのインスタンスのフィールドに代入してから、readDataBookクラスの配列に代入したいです。
発生しているエラー
./readAndWrite.java:14: エラー: クラス readDataのメソッド setReadDataは指定された型に適用できません。
rd.setReadData(line);
^
期待値: String,int,int,int,int,int
検出値: String
理由: 実引数リストと仮引数リストの長さが異なります
エラー解釈
変数lineをString型で定義しているため、引数がint型であるsetReadDataを正しく使用できていない。
ネットで調べたのですが、どのようにStringをintに変換してうまく読み込ませればよいのかわからなかったので教えてください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/15 06:00
2021/07/15 06:08
2021/07/15 06:45
2021/07/15 06:55
2021/07/15 07:18
2021/07/15 07:31