NullPointerException для ArrayList при вызове «добавить»? - PullRequest
0 голосов
/ 15 декабря 2011

всякий раз, когда я запускаю следующий код, он дает мне NullPointerException., хотя я проверяю, если не ноль, то добавляю, но все равно даю этот eception. file - простой текст (.txt) что может быть не так?

BufferedReader  br2 = new BufferedReader(new FileReader(file));
ArrayList<String> keArrayList=null;
for(int i=0;br2.readLine()!=null;i++)
{
  String  letter= br2.readLine();
  if (letter!=null)
    keArrayList.add(i,letter);
}

Ответы [ 5 ]

5 голосов
/ 15 декабря 2011

keArrayList is null:

ArrayList<String> keArrayList=null;

Изменить на:

List<String> keArrayList=new ArrayList<String>();
2 голосов
/ 15 декабря 2011

вы только что объявили объект, который вы должны создать и инициализировать.

Объявление: Код, выделенный жирным шрифтом, - это все объявления переменных, которые связывают имя переменной с объектомtype.

Instantiation: Новое ключевое слово - это оператор Java, который создает объект.

Инициализация: За новым оператором следует вызовконструктору, который инициализирует новый объект.

, пожалуйста, прочитайте об этом здесь

2 голосов
/ 15 декабря 2011

Ну, вы не создали ни одного экземпляра ArrayList для использования в первую очередь.ArrayList<String> keArrayList - это только поле (заполнитель) для реального ArrayList<String> объекта.Поэтому вам нужно просто изменить эту строку на:

ArrayList<String> keArrayList = new ArrayList<String>();

Теперь вы создаете настоящий ArrayList объект и сохраняете его в этом поле.

Подробнее вы можете прочитать здесь:

2 голосов
/ 15 декабря 2011

вы установили для keArrayList значение null непосредственно перед циклом.

1 голос
/ 15 декабря 2011

Вы должны проверить трассировку стека, чтобы знать, где именно происходит исключение NullPointerException.Вы проверяете null для «письма», но проверяете ли вы keArrayList ?? НЕТ, поэтому вы получаете исключение на keArrayList.add(i,letter);

...