複数行の csv ファイルを取得し、そのファイルの内容を配列リストとして返すメソッドを作成しようとしています。私の問題は、配列行を印刷すると、ファイルの最後の行の内容しかないように見えることです。私が知らない FileReader または BufferedReader に関する何かではないかと疑っています。とにかく、ここにコードがあります:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public int[][] readCSV(String pFilename) throws NumberFormatException, IOException {
int[][] arr = new int[19][19];
BufferedReader br = new BufferedReader(new FileReader(pFilename));
String line = " ";
String [] temp;
while ((line = br.readLine())!= null){
temp = line.split(","); //split spaces
for(int i = 0; i<arr.length; i++) {
for (int j = 0; j<arr.length; j++) {
arr[i][j] = Integer.parseInt(temp[j]);
}
}
}
printArray(arr);
}
public static void printArray (int[][] arr) {
for (int i =0; i <arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[i][j]);
}
System.out.println("");
}
}
}
入力
1,1,0,0,1,1,1,1,1,0,0,1,1,0,0,0,1,1,1
1,0,0,1,1,1,1 ,0,1,1,1,0,1,1,1,0,1,0,1
1,0,0,1,0,0,1,1,1,1,1,1,1, 1,1,0,1,1,0
1,1,0,1,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1
1, 1,0,1,1,1,0,1,0,1,0,0,1,1,1,0,1,0,0
1,1,1,1,1,1,1,1 ,1,1,1,1,1,0,1,0,1,1,1
1,1,1,0,0,0,1,1,1,0,1,1,1,1, 1,0,1,0,1
0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1
1,1, 1,1,1,0,0,1,1,1,1,0,1,0,0,1,1,0,1
1,1,1,0,1,1,1,0,1 ,0,1,1,1,1,0,1,1,1,1
0,0,1,1,1,1,1,0,0,1,0,1,1,0,1, 1,0,1,0
1,0,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0
1,1,1, 1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1
1,0,1,0,1,1,1,1,1,1 ,0,1,1,1,1,1,0,1,1
1,1,1,0,1,1,0,1,1,0,1,1,1,0,1,1, 0,1,0
1,0,0,1,1,1,0,1,1,1,0,1,1,1,0,0,1,1,0
1,1,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1
0,1,0,0,1,1,0 ,1,0,1,1,1,0,1,1,0,1,1,1
1,1,0,0,1,1,1,1,1,1,0,0,1, 1,0,1,0,1,0
0,1,1,1,0,0,1,1,1,1,1,1,0,1,0,1,1,1,0
印刷出力
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110
0111001111110101110