###前提・実現したいこと
avaを使用しております。
プログラムの引数で入力ファイルを読み込む。ただし、入力ファイルにはコンマ区切りで学生番号、氏名、国語の点、英語の点、数学の点がかかれています。読み込んだ内容を表示し,3教科の合計点順にソートし,ソートした結果を表示する。その後,引数で指定した出力ファイルにコンマ区切りで,学籍番号,氏名,国語の点,数学点,英語の点,合計点を出力するプログラムの作成をしています。入力ファイルはK71i.csvです.
また以下の仕様を満たしたいです。
Studentクラスを実装
・学籍番号,氏名,国語の点,数学の点,英語の点,合計点を格納すprotectedメンバーを実装
・それぞれのメンバーのゲッターメソッド,セッターメソッドを実装
・学籍番号,氏名,国語の点数,数学の点数,英語の点数を引数とするコンストラクタを実装
StudentListクラスを実装
・ArrayList<Student>型のprotectedメンバーを実装
・ファイル名を引数として,ファイルの内容をArrayListに格納するreadData(String name)メソッドを実装
・ArrayListに格納されたデータを合計点の高い順にソートするsortData()メソッドを実装
・ArrayListに格納されたデータを表示するshowData()メソッドを実装
・ファイル名を引数として,ArrayListの内容をファイルに出力するwriteData(String name)メソッドを実装
・データ数は不定とする(いくつでも対応できるようにする)
はっきりいって何をしたら良いかがさっぱりです。
ArrayListに格納というのもやり方が分かりません。
ファイルから読み込むということもよくわからないです。
よければ丁寧に一つずつ教えていただけると幸いです。
先ほどの質問に少し修正を加えてみました。
ファイルの読み込みについてはおそらく大丈夫・・・
ソートがわからないです・・・。
国語、数学、英語の点数がどこにあって、どのようにすれば使えるのおかがわからないです・・・。
またここ違うよ!などの指摘もほしいです。よろしくお願いします!
###発生している問題・エラーメッセージ
エラーメッセージ
###該当のソースコード
java
1import java.io.*; 2import java.io.FileReader; 3import java.io.BufferedReader; 4import java.util.StringTokenizer; 5import java.io.IOException; 6import java.util.ArrayList; 7 8public class Kadai71{ 9 public static void main (String[] args) throws FileNotFoundException, IOException{ 10 11 try{ 12 FileReader fr = new FileReader("kadai71i.csv"); 13 BufferedReader br = new BufferedReader(fr); 14 15 String line; 16 StringTokenizer token; 17 while((line = br.readLine()) != null){ 18 token = new StringTokenizer(line,","); 19 20 while(token.hasMoreTokens()){ 21 System.out.println(token.nextToken()); 22 } 23 } 24 br.close(); 25 26 } catch(IOException ex) { 27 ex.printStackTrace(); 28 } 29 30 } 31} 32 33/** 34*学籍番号、氏名、国語、英語、数学の点数、合計点を格納するStudentクラス 35*/ 36class Student { 37 38 /** 39 *学籍番号を表します 40 */ 41 protected int number; 42 43 /** 44 *氏名を表します 45 */ 46 protected String name; 47 48 /** 49 *国語の点数を表します 50 */ 51 protected int japanese; 52 53 /** 54 *数学の点数を表します 55 */ 56 protected int math; 57 58 /** 59 *英語の点数を表します 60 */ 61 protected int english; 62 63 /** 64 *合計点を表します 65 */ 66 protected int total; 67 68 /** 69 *学籍番号、氏名、国語、数学、英語の点数を設定するコンストラクタ 70 */ 71 public Student(int n, String N, int j, int m, int e){ 72 number = n; 73 name = N; 74 japanese = j; 75 math = m; 76 english = e; 77 } 78 79 80 /** 81 *学籍番号を返すメソッド 82 */ 83 public int getNumber(){ 84 return number; 85 } 86 87 /** 88 *氏名を返すメソッド 89 */ 90 public String getName(){ 91 return name; 92 } 93 94 /** 95 *国語の点数を返すメソッド 96 */ 97 public int getJapanese(){ 98 return japanese; 99 } 100 101 /** 102 *数学の点数を返すメソッド 103 */ 104 public int getMath(){ 105 return math; 106 } 107 108 /** 109 *英語の点数を返すメソッド 110 */ 111 public int getEnglish(){ 112 return english; 113 } 114 115 /** 116 *合計点を返すメソッド 117 */ 118 public int getTotal(){ 119 return total; 120 } 121 122 /** 123 *国語、数学、英語の合計点を計算してセットするメソッド 124 */ 125 public void setTotal(int a, int b, int c){ 126 total = a + b + c; 127 } 128} 129 130class StudentList{ 131 /** 132 *ArrayList<String>型のprotectedメンバーの実装 133 */ 134 protected ArrayList<String> al = new ArrayList<String>(); 135 protected String line; 136 137 /** 138 *ファイル名を引数として、ファイルの内容をArrayListに保存する 139 */ 140 public String readData(String name){ 141 BufferedReader in = new BufferedReader(name); 142 while((line = in.readLine()) != null){ 143 al = line.split("\\,"); 144 } 145 } 146 147 /** 148 *ArrayListに格納されたデータを合計点の高い順にソートするメソッド 149 */ 150 public int sortData(){ 151 152 } 153 154} 155
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答3件
あなたの回答
tips
プレビュー