csvファイルを読み取り、成績をつけるプログラムを作成しています。コンパイルはできるのですが、以下のエラーが出ます。
94行目に原因があるようですが、解決できませんでした。
何が原因なのでしょうか?
コードは以下のとおりです。
java
1import java.util.*; 2import java.io.*; 3 4public class GradeChecker2{ 5 void run(String[] args)throws IOException{ 6 HashMap<Integer, Double> grade = new HashMap<>(); 7 8 ArrayList<Integer> assignments = new ArrayList<>(); 9 10 ArrayList<Integer> miniexam = new ArrayList<>(); 11 12 this.initializeExam(grade, args[0]); 13 this.initializeAssignments(assignments, args[1]); 14 this.initializeMiniexam(miniexam, args[2]); 15 this.juageAndPrint(grade, assignments, miniexam); 16 } 17 void juageAndPrint(HashMap<Integer, Double> grade, 18 ArrayList<Integer> assignments, ArrayList<Integer> miniexam){ 19 String rank = " "; 20 double record = 0; 21 Integer i = 0;//計算用のカウンタ変数 22 23 for(Map.Entry<Integer, Double> entry:grade.entrySet()){ 24 record = (70 * entry.getValue()) / 100 + (25 * assignments.get(i)) / 60 25 + (5 * miniexam.get(i)); 26 27 rank = juage(record, entry.getValue()); 28 29 System.out.printf("%d, %.3f, %.0f, %.0f, %s%n", entry.getKey(), 30 entry.getValue(),assignments.get(i), miniexam.get(i), rank); 31 32 i++; 33 } 34 } 35 String juage(double record, double value){ 36 String rank = " "; 37 if(record >= 90){ 38 rank = "秀"; 39 } 40 else if(record >= 80){ 41 rank = "優"; 42 } 43 else if(record >= 70){ 44 rank = "良"; 45 } 46 else if(record >= 60){ 47 rank = "可"; 48 } 49 else if(record < 60 && record > 0){ 50 rank = "不可"; 51 } 52 else if(value == 0.0){ 53 rank = "K"; 54 } 55 return rank; 56 } 57 void initializeExam(HashMap<Integer, Double> grade, String args) 58 throws IOException{ 59 BufferedReader inExam = new BufferedReader(new FileReader(new File(args))); 60 61 Integer num = 1; 62 63 String line; 64 while((line = inExam.readLine()) != null) { 65 String[] items = line.split(","); 66 Integer key = Integer.valueOf(items[0]); 67 Double value = Double.valueOf(items[1]); 68 69 if(!Objects.equals(num, key)){ 70 for( ; num < key; num++){ 71 grade.put(num, 0.000 ); 72 } 73 } 74 else{ 75 grade.put(key, value); 76 } 77 num++; 78 } 79 inExam.close(); 80 } 81 void initializeAssignments(ArrayList<Integer> assignments, String args) 82 throws IOException{ 83 BufferedReader inAssignments = new BufferedReader(new FileReader(new File(args))); 84 85 Integer total = 0; 86 Integer num = 0; //課題の点数を入れる 87 88 String line; 89 while((line = inAssignments.readLine()) != null){ 90 String[] items = line.split(","); 91 for(Integer i = 1; i <= 6; i++){ 92 93 if(Objects.equals(items[i], null)){ 94 num = 0; 95 total += num; 96 } 97 else{ 98 num = Integer.valueOf(items[i]); 99 total += num; 100 } 101 } 102 assignments.add(total); 103 } 104 inAssignments.close(); 105 } 106 void initializeMiniexam(ArrayList<Integer> miniexam, String args) 107 throws IOException{ 108 BufferedReader inMiniexam = new BufferedReader(new FileReader(new File(args))); 109 Integer num = 1, count = 0, result = 0, ID = 0; 110 111 String line; 112 while((line = inMiniexam.readLine()) != null){ 113 String[] items = line.split(","); 114 115 if(!Objects.equals(num, items[0])){ 116 ID = Integer.valueOf(items[0]); 117 for( ; num < ID; num++){ 118 miniexam.add(0); 119 } 120 } 121 else{ 122 for(Integer i = 1; i <= 14; i++){//出席率を算出 123 if(Objects.equals(items[i], null)){ 124 count++; 125 } 126 } 127 result = count / 14; 128 miniexam.add(result); 129 } 130 num++; 131 count = 0; 132 } inMiniexam.close(); 133 } 134 135 public static void main(String[] args)throws IOException{ 136 GradeChecker2 checker = new GradeChecker2(); 137 checker.run(args); 138 } 139}
前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー