Неожиданное исключение NullPointerException при присвоении массивов из конструктора

Я не могу понять это, и если бы вы, ребята, могли бы помочь мне, это было бы здорово! Я пытаюсь передать уже созданные объекты в конструктор, чтобы я мог получить все их значения.

public class Drops {
  Ship ship;
  Bullet[] bullet;
  Aliens[] aliens;
  Movement movement;

  public Drops(Ship ship,Bullet[] bull,Aliens[] alienT) {
    this.ship = ship;
    for (int a = 0; a < MainGamePanel.maxAliens;a++) {
      System.out.println(a +" " +alienT[a].x); // THIS WORKS, when nothing
                                               // is being assigned, so the values 
                                               // are being passed correctly.
      this.aliens[a] = alienT[a];
      for (int b = 0; b < MainGamePanel.maxShots;b++){
        this.bullet[b] = bull[b];
  }
    }
  }
// that is is the class, and also where the error occurs

в основном я посылаю значения в конструктор, как это

drop = new Drops(ship, bull, alienT);

Корабль - это не массив быков, а иностранец - оба.

Заранее спасибо!

3 ответа

Решение

Вам нужно инициализировать массивы:

Bullet[] bullet;
Aliens[] aliens;

например:

public Drops(Ship ship,Bullet[] bull,Aliens[] alienT){
    this.ship = ship;
    this.bullet = new Bullet[bull.length];
    this.aliens = new Aliens[alianT.length];
    // ..

Также убедитесь, что условие цикла учитывает длину alienT а также bullесли они короче MainGamePanel.maxAliens а также MainGamePanel.maxShots ты получишь ArrayIndexOutOfBoundsException,

Вы можете определить параметры bull и allienT как Collection<Bullet> а также Collection<AllienT> respectivelly.

Затем вы можете вызвать этот метод, передавая ArrayList, HashSet или ваш предпочтительный класс коллекции.

Вы получаете NPE из-за aliens а также bullet массивы-члены null, Убедитесь, что вы создаете их экземпляры в конструкторе правильной длины:

public Drops(Ship ship,Bullet[] bull,Aliens[] alienT){
    this.ship = ship;
    this.aliens = new Aliens[alienT.length];
    this.bullet = new Bullet[bull.length];
    // ...
}
Другие вопросы по тегам