こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【Java】CSVファイル 月ごとの時間算出方法

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){}
}
}
}

投稿日時 - 2020-10-21 23:43:23

QNo.9814084

すぐに回答ほしいです

質問者が選んだベストアンサー

ざっと見ただけですが、

>if(line.contains("月") && line.contains("日")){

このif文の条件が満たされなかった場合、lineを更新する処理がないため、無限ループになりませんか?

投稿日時 - 2020-10-22 10:02:56

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問