Мой Java-код выходит из строя, когда я пытаюсь вызвать метод из массива объектов

#java #arrays

#java #массивы

Вопрос:

Я просто изучаю Java и пытаюсь создать массив класса. При вызове метода из массива происходит сбой. Работает нормально, если это не массив

 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  cDate test=new cDate();
  test.setDay(0);
  mAppoitments = new cDate[24];
  // crashes why?????
  mAppoitments[0].setDay(0); 
  

Ответ №1:

Вы не заполнили свой массив объектами. Вы должны:

   cDate[0] = test;
  

В противном случае у вас есть null индекс 0, и вы не можете вызвать что-либо на null .

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

  • что такое сообщение об исключении и stacktrace. «вылетает» почти ничего не значит
  • расскажите нам, какие ваши переменные не инициализированы во фрагменте кода. Вы можете увидеть один ответ, в котором предлагается исправить локальное объявление, которое, вероятно, является переменной экземпляра.

Комментарии:

1. Спасибо вам, я думал, что mAppoitments = new CDate[24]; настраивал его,

Ответ №2:

У вас есть массив из 24 объектов, каждому из которых присвоено значение null . Вам нужно инициализировать каждый из них, прежде чем вы сможете вызывать для него методы.

Ответ №3:

Вы инициализировали массив, но не объекты в массиве. Попробуйте инициализировать эти элементы перед их использованием.

 mAppoitments = new cDate[24];
for (int i = 0; i < mAppoitments.length; i  )
    mAppoitments[i] = new cDate();
mAppoitments[0].setDay(0);
  

Комментарии:

1. Спасибо, я думал, что mAppoitments = new CDate[24] инициализирует все объекты в массиве

Ответ №4:

 final int COUNT= 24;

mAppoitments = new cDate[COUNT];
for(int i = 0 ; i < COUNT ;   i) {
   mAppoitments[i] = new cDate();
   mAppoitments[i].setDay(0); 
}
  

Ответ №5:

 cDate myAppointments = new cDate[24];
  

попробуйте объявить тип переменной

Комментарии:

1. Если бы это было проблемой, он бы даже не компилировался. Реальная проблема в том, что его массив заполнен null ссылками.