Получение NullPointerException - как его удалить? - PullRequest
0 голосов
/ 27 января 2012

Я новичок в программировании.

array [row][col] = line.charAt(col);

^ это строка, где я получаю NullPointerException в моем коде.Как это убрать?

Scanner in = null;
try {
    in = new Scanner(new FileReader("C:\\Documents and Settings\\UserXP\\My Documents\\src\\file.txt"));
} catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
String line="";
ArrayList<String>arrayList=new ArrayList<String>();

while((line=in.nextLine())!=null) {
    arrayList.add(line);
    char [][] array = new char [2337][];
    for (int row = 0; row<arrayList.size(); row++)
        for(int col = 0; col<line.length(); col++) {
            array [row][col] = line.charAt(col);
            System.out.print(""+ array[row][col]);
        }
    System.out.println("");
}

//Close the input stream
in.close();

1 Ответ

7 голосов
/ 27 января 2012

Вы никогда не выделяете память для второго измерения вашего массива:

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]);
    }
}

Обратите внимание, поскольку ваша логика выглядит неэффективной, поскольку вы воссоздаете строки каждый раз, когда добавляете строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...