Вы никогда не выделяете память для второго измерения вашего массива:
char [][] array = new char [2337][];
Дает вам 2337 char[]
с, но все они равны нулю.
Вам понадобится
array[row] = new char[line.length()];
перед циклом столбца.
РЕДАКТИРОВАТЬ (уточнить, куда вставить):
for (int row = 0; row<arrayList.size(); row++) {
array[row] = new char[line.length()];
for(int col = 0; col<line.length(); col++) {
array [row][col] = line.charAt(col);
System.out.print(""+ array[row][col]);
}
}
Обратите внимание, поскольку ваша логика выглядит неэффективной, поскольку вы воссоздаете строки каждый раз, когда добавляете строку.