#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
ссылками.