Доступ к нулевому указателю: переменная может быть нулевой только в этом месте.

for(int i=0;i<n;i++){
  for(int j=0;j<26;j++){
    if(str.charAt(i)== strChar.charAt(j) )
    * strSet1.append(str.charAt(i));
  }
    * strSet2.append(str.charAt(i));
}

Исключение:

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

почему этот код дает исключение нулевого указателя

предупреждение: Доступ к нулевому указателю: переменная strSet1 может быть нулевой только в этом месте. Доступ к нулевому указателю: переменная strSet2 может быть нулевой только в этом месте.


person sky    schedule 17.11.2013    source источник
comment
Предоставьте полностью предупреждающее сообщение и отметьте строку, в которой оно появляется.   -  person musical_coder    schedule 17.11.2013
comment
это означает, что длина вашей строки str меньше либо n, либо 26   -  person Tushar    schedule 17.11.2013
comment
Я думаю, что ваше условие внутреннего цикла неверно. какая у вас длина строки?   -  person Elior    schedule 18.11.2013
comment
@TusharGupta: в этом случае будет выброшено IndexOutOfBoundsException. NPE выбрасывается, например, когда вы вызываете метод для нулевого объекта.   -  person t0mppa    schedule 18.11.2013
comment
str - это n, который вводится, а strChar - это 26 букв.   -  person sky    schedule 18.11.2013


Ответы (1)


strSet1 и strSet2 инициализированы до этого? Если они равны нулю, вы получите NullPointerException.

* ИЗМЕНИТЬ *

Вы не можете вызвать .append() (или любой другой метод) для переменной, которая равна null. Инициализируйте их как:

StringBuffer strSet1 = new StringBuffer();
StringBuffer strSet2 = new StringBuffer();
person t0mppa    schedule 17.11.2013
comment
изначально да, все три переменные инициализируются нулевым значением, так что мне делать? @томппа - person sky; 18.11.2013
comment
Смотрите обновленный ответ, вы не можете вызывать методы для объектов null. - person t0mppa; 18.11.2013
comment
последний str содержит входные данные, а strChar не равен нулю - он содержит 26 alhabates @tomppa - person sky; 18.11.2013
comment
А как насчет strSet1 и strSet2? - person t0mppa; 18.11.2013
comment
конечно, str меньше 26, но str String равна n @Tusar gupta - person sky; 18.11.2013
comment
strSet1 и strSet2 - это BufferString с нулевым значением -- @tomppa - person sky; 18.11.2013
comment
Таким образом, вы можете исправить программу, инициализировав их, как показано выше (снова отредактированный ответ). - person t0mppa; 18.11.2013