私はcsvファイルからデータを取得し、配列に格納するこのメソッドで作業しています。私がコンパイルしたコードですが、各配列の値は "null"です。なぜこれが起こっているのか分かりません。CSVファイル分割値すべてnull
CSVファイルは次のように見えるが91行継続:
日曜日/ 2016分の1 9 ,,,,, 16:00,20:00
9月2日(月曜日)/ 2016,8 :00,12:00 ,,,,
9月3日(火曜日)/ 2016,8:00,12:00,12:00,16:00 ,,
水曜日/ 2016分の4 9 ,,,, 、16:9// 2016年6 ,,, 12 00 ,,,,
金曜日:00,16:9/10/2016,8 00
木曜日:00,12 00,20 00 ,,
土曜日、9/7/2016 ,,,,, 16:00,20:00
public static void getData() throws FileNotFoundException {
File timeSheets = new File("timeSheets.csv");
Scanner ts = new Scanner(timeSheets);
int n = 0, c = 0;
String temp;
while (ts.hasNext()) {
temp = ts.nextLine();
c++;
}
String[] field = new String[8];
String[] day = new String[c];
String[] date = new String[c];
Integer[] morn = new Integer[c];
Integer[] after = new Integer[c];
Integer[] night = new Integer[c];
while (ts.hasNext()) {
temp = ts.nextLine();
field = temp.split(",");
day[n] = field[0];
date[n] = field[1];
if (field[4].equals("")) {
morn[n] = 0;
} else {
morn[n] = (int) (Double.parseDouble(field[4].replace(":", "."))
- Double.parseDouble(field[3].replace(":", ".")));
}
if (field[6].equals("")) {
after[n] = 0;
} else {
after[n] = (int) (Double.parseDouble(field[6].replace(":", "."))
- Double.parseDouble(field[5].replace(":", ".")));
}
if (field[8].equals("")) {
night[n] = 0;
} else {
night[n] = (int) (Double.parseDouble(field[8].replace(":", "."))
- Double.parseDouble(field[7].replace(":", ".")));
}
n++;
}
System.out.print(day.length);
System.out.println();
for (int i = 0; i < day.length; i++) {
System.out.println(day[i]);
}
ts.close();
}
ループしながら、あなたは最初の内のすべての行を尽くす - ので、何も第二のループの開始時に残っていない...あなたは 'TS =新しいスキャナ(タイムシート)を追加することができますが、 '2番目のループの前に。しかし、その後、配列のサイズを取得するために2回だけのファイルを読むことは非常に非効率的である... – assylias