Неожиданное исключение 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];
// ...
}