Я пишу некоторый код Java, чтобы прочитать каждую строку файла данных в список массивов, перемешать этот список, а затем выполнить некоторые дополнительные операции над перемешанными данными. Проблема в том, что после перемешивания я получаю нулевые элементы для некоторых элементов в списке массивов.
//this file contains the data
String input = ...;
//this file contains the number of rows in the data file
String input2 = ...;
FileInputStream fstream2 = new FileInputStream(input2);
DataInputStream in2 = new DataInputStream(fstream2);
BufferedReader brIndex = new BufferedReader(new InputStreamReader(in2));
for(int i = 1; i <= N; i++) {
FileInputStream fstream = new FileInputStream(input+(i+1)+".txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader brData = new BufferedReader(new InputStreamReader(in));
num = Integer.parseInt(brIndex.readLine());
ArrayList<String> temp = new ArrayList<String>();
for(int j = 0; j < num; j++) {
temp.add(brData.readLine());
}
brData.close();
Collections.shuffle(temp);
//read in shuffled data
for(int j = 0; j < num; j++) {
rowData = temp.get(j); ...
}
При выполнении кода я получаю NullPointerException
после этого при работе с rowData
. Исходный файл содержит 17 169 строк (ни одна из них не пуста). temp.size()
также равно 17,169, но когда я выводил temp на консоль, temp.get(j)
был нулевым для некоторых j
, а не для других.
Может кто-нибудь объяснить мне, почему это так и как этого избежать?