前提・実現したいこと
CSVファイルを読み込み、月ごとの所要時間の合計を
算出するプログラムを作成しています。
while文の処理がうまくいかず、無限ループから抜け出せずに
困っています。
丸投げのような質問となってしまい申し訳ありませんが
ヒントをいただけたらと思います。
よろしくお願いします。
【CSVファイルイメージ】
7月1日,6
7月2日,11
7月3日,0
8月1日,9.4
8月2日,11
8月3日,0
・・・
【出力イメージ】
7月17
8月20.4
発生している問題・エラーメッセージ
無限ループになってしまう。
該当のソースコード
import java.io.*; class Test{ public static void main(String[] args) { String line; String[] data; String month = ""; double monthlyTotal = 0; BufferedReader reader = null; try{ reader = new BufferedReader(new FileReader("test.csv")); line = reader.readLine();//最初の1行を読む while(line != null) { if(line.contains("月") && line.contains("日")){ data = line.split(","); if(month.isEmpty()){ month = data[0].substring(0,data[0].indexOf("月")); } //同じ月の中のループ while(line.substring(0,data[0].indexOf("月")).equals(month)){ if(!data[1].isEmpty()) { monthlyTotal += Double.parseDouble(data[1]); } month = data[0].substring(0,data[0].indexOf("月")); //次行の読み込み line = reader.readLine(); data = line.split(","); } System.out.println(month + "月" + monthlyTotal); monthlyTotal = 0; //data = line.split(","); if(!data[1].isEmpty()) { monthlyTotal += Double.parseDouble(data[1]); } } } System.out.println(month+ "月" + monthlyTotal); }catch(IOException e) { e.printStackTrace(); }finally { try { if(reader != null) { reader.close(); } }catch(IOException e){} } } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。