2012-05-09 6 views
1

私はこれを理解することができないでしょうし、もし皆さんが助けてくれればそれは素晴らしいでしょう! 私はすでに作成したオブジェクトをコンストラクタに渡して、すべての値を取得できるようにしようとしています。主に予期しない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 

私は船が配列雄牛とalienTないこの

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

ようコンストラクタに値を送信しています両方のアレイです。

ありがとうございます!彼らはより短い場合、ループ条件が考慮にalienTbullの長さを取ることを確認して、また

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

Bullet[] bullet; 
Aliens[] aliens; 

例えば:あなたは配列を初期化する必要が

答えて

1

MainGamePanel.maxAliensMainGamePanel.maxShotsArrayIndexOutOfBoundsExceptionになります。

+0

ありがとうございました。私はそれを知っていたのでそれは面白いですが、悲惨に失敗して、彼らを気のきいたループに入れました! 編集:はい、maxAliensとmaxShotsは、MainGamePanelで初期化されると、実際には他のオブジェクトの配列サイズを宣言しています。 – Michael

0

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

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

+0

それは私の頭の上で少し上に行った、私はまだJavaとプログラミングの一般的な非常に新しいですが、すぐに勉強。私が想定しているコレクションは、新しいものを作成せずにコンストラクタから呼び出された配列を使用する別の方法です。同じクラスの他のメソッドでも使えますか? – Michael

+0

Collectionは、ArrayList、HashSet、LinkedHashSet、TreeSetなどの多くのデータ構造クラスによって実装されたインターフェイスです。パラメータはコレクションとして定義でき、それぞれのケースについて決定した実装で作業できます。ここにいくつかのドキュメントがあります:[リンク] http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html –

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]; 
    // ... 
} 
関連する問題