Почему я получаю ошибку NullPointerException с моим массивом? - PullRequest
0 голосов
/ 21 ноября 2011

Моя программа запускается.Просто в середине программы написано:

Exception in thread "main" java.lang.NullPointerException
at Example.main(Example.java:33)

Вот мой код:

String [] iArray ;
String i ;
int counter=1 ; counteragain=-1, q;

do {
System.out.print ("\n\nItem Code : ") ;
i = s.next();

if (i.equals ("0") ){
  counter = 0 ;
} else {
  System.out.print ("\nQuantity: ") ;
q = s.nextInt() ;
counteragain++ ;

i = iArray[counteragain];
}
} while (counter!=0) ;

Строка, в которой я получаю сообщение об ошибке:

 i = iArray[counteragain];

Почему я получаю эту ошибку?Мой синтаксис неправильный?Но тогда почему он запускает мою программу?

Любая помощь будет высоко ценится.

Ответы [ 6 ]

4 голосов
/ 21 ноября 2011

Вы не инициализировали этот массив. Следовательно, он имеет значение null . Вы должны сделать что-то вроде этого

String[] iArray = new String[numberOfElements];

Вы не должны инициализировать массив в объявлении. Таким образом, вы можете сначала вспомнить это numberOfElements и затем инициализировать его.

iArray = new String[numberOfElements];
2 голосов
/ 21 ноября 2011

String [] iArray ; никогда не создается. Итак, изначально iArray равно нулю.

Когда вы получаете элемент i = iArray[counteragain];, вы пытаетесь получить доступ к необработанному массиву, поэтому выдается NullPointerException.

Я не знаю, какой у вас размер массива, но чтобы отменить его, вам нужно будет сделать:

String[] iArray = new String[size];

Теперь у iArray будет заполнитель длины size, но каждому элементу будет null, так как ему не было присвоено значение. то есть iArray[0] будет нулевым, поскольку в элементе 0 нет значения.

0 голосов
/ 21 ноября 2011

iArray = new String[n];, где n - количество элементов в iArray.

Должно помочь вам избавиться от NullPointerException ..

0 голосов
/ 21 ноября 2011

Ваш код не завершен, он не показывает, что это такое (я думаю, что это итератор) и откуда он взялся.Исходя из кода, который вы разместили, исключение является следствием

String [] iArray;

Вы не инициализировали iArray, поэтому он равен null;Вы должны опубликовать рабочий метод / класс, чтобы получить правильный ответ.

0 голосов
/ 21 ноября 2011

вам нужно выделить массив.линия String [] iArray;только объявил ссылку на массив типа string, но не выделил место для объектов в массиве;вам нужно изменить эту строку на что-то вроде

String[] iArray = new String[size of needed array];

, если вы не можете предсказать необходимый размер, может быть лучше использовать тип коллекции, например ArrayList

0 голосов
/ 21 ноября 2011

iArray никогда не инициализируется.Таким образом, разыменованный iArray[counteragain] делает это с нулевой ссылкой;отсюда NullPointerException.

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