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はアレイブルではなく、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];
    // ..

また、との長さがより短い場合は、ループ条件でalienTとの長さが考慮されていることを確認してください。bullMainGamePanel.maxAliensMainGamePanel.maxShotsArrayIndexOutOfBoundsException

于 2012-05-09T16:17:46.663 に答える
0

bullパラメータとallienTパラメータをそれぞれとして定義できCollection<Bullet>ますCollection<AllienT>

ArrayList次に、、HashSetまたは好みのコレクションクラスを渡してこのメ​​ソッドを呼び出すことができます。

于 2012-05-09T16:19:22.117 に答える
0

aliensbulletメンバー配列がであるため、NPEを取得しています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 に答える