-1

я пишу метод, который создает объект "house", в нём есть массив этажей, на каждом этаже массив квартир. При присвоении номера квартире выскакивает такая ошибка, не могу разобраться почему? (Ошибка кроется в первых строках цикла, поэтому полный коне стал давать т.к там похожие операции и такие же ошибки)

Класс Level

public class Level {
    private int number;
    private Flat[] flats;
public void setNumber(int number) {
    this.number = number;
} 

Класс HouseRun

public class HouseRun {
    public static void main(String[] args) {
ObjectCreating(5,4);
    }

   public static void ObjectCreating(int HouseNumber, int LevelsQuantities){
       int  FlatsCount = 1;
       House house = new House(HouseNumber, LevelsQuantities);
       Level[] levels = new Level[LevelsQuantities];
       for (int i = 0; i < levels.length ; i++) {
           levels[i].setNumber(i+1);
           levels[i].setFlats();
           Flat[] levelsFlats = levels[i].getFlats();


stepanevgen2013
  • 395
  • 1
  • 10

1 Answers1

1

Это типичная ошибка полагать, что при создании массива создаётся массив с "пустыми" объектами. На самом деле, массивы заполняются null-ами, и перед вызовом каких-либо методов экземпляра класса Level, нужно этот экземпляр создать, вызвав какой-либо конструктор (хотя бы конструктор без аргументов, существующий по умолчанию).

Level[] levels = new Level[LevelsQuantities];
for (int i = 0; i < levels.length ; i++) {
    levels[i] = new Level(); // создать экземпляр Level в массиве!
    levels[i].setNumber(i + 1);
    levels[i].setFlats();
    Flat[] levelsFlats = levels[i].getFlats();
}
Nowhere Man
  • 15,995
  • 33
  • 19
  • 29