1

我似乎无法弄清楚这一点,如果你们能帮助我,那就太棒了!我正在尝试将已经制作的对象传递给构造函数,以便获取它们的所有值。

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);

ship 不是数组 bull,alienT 都是数组。

先感谢您!

4

3 回答 3

1

您需要初始化数组:

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];
    // ..

此外,请确保循环条件考虑了 和 的长度alienTbull如果它们短于MainGamePanel.maxAliens并且MainGamePanel.maxShots您将得到ArrayIndexOutOfBoundsException.

于 2012-05-09T16:17:46.663 回答
0

您可以分别定义 Bull 和 allienTCollection<Bullet>参数Collection<AllienT>

然后你可以调用这个方法传递一个ArrayListHashSet或者你喜欢的集合类。

于 2012-05-09T16:19:22.117 回答
0

你得到 NPE 因为aliensbullet成员数组是null. 确保您在构造函数中以适当的长度实例化它们:

public Drops(Ship ship,Bullet[] bull,Aliens[] alienT){
    this.ship = ship;
    this.aliens = new Aliens[alienT.length];
    this.bullet = new Bullet[bull.length];
    // ...
}
于 2012-05-09T16:21:17.557 回答