0

クラス内でオブジェクトを含む配列をループするのに問題があります。あなたが従うことができるように、私はここに小さなデモを書きました:

Tank tanks[] = new Tank[2];
tanks[0] = new Tank();
tanks[1] = new Tank();
tanks[0].doStuff(tanks);

doStuff(Tank[] tanks) {
    for (int i = 0; i < tanks.length; i++) {
        if (tanks[i].equals(this)) continue;
        // Do stuff
    }
}

したがって、タイプ Tank の配列があります。次に、Tank クラス内で doStuff メソッドを呼び出します。メソッドは配列を受け取り、それをループします。そして、クラスの現在のインスタンスではないすべてのタンクに対して処理を実行したいと考えています。私のコードとこの説明を理解していただければ幸いです。

問題は、私が nullPointerException を取得することですif (tanks[i].equals(this))

ここで何が間違っていますか?

4

3 に答える 3

1

オブジェクトのIDを比較したい場合は、==代わりに使用できます.equals()

doStuff(Tank tanks) {
  for (int i = 0; i < tanks.length; i++) {
    if (tanks[i] == this) {
        continue;
      }
    // Do stuff
  }
}
于 2013-05-08T15:47:25.390 に答える