私はこの減少したコードでなぜnullpointerを取得するのか理解しようとしています。他のユーザーがArrayListを初期化しなかったのと同様の質問があります。私の例では、ArrayListを初期化していますが、追加しようとするとnullpointerが表示されます。何故ですか? 、と私はわからないんだけど、なぜ私のグリッドオブジェクトのISN以降」;Javaで初期化されたArrayList nullpointer
public class Grid {
private int x, y;
private List<Node>[][] grid = null;
public Grid(int x, int y) {
this.x = x;
this.y = y;
this.grid = new ArrayList[x][y];
}
public void addEle(Entity entity) {
for (int x = 0; x <= 3; x++) {
for (int y = 0; y <= 3; y++) {
this.grid[x][y].add(new Node(entity));
}
}
}
}
は、私が "this.grid [X] [Y] .add(新しいノード(エンティティ))"、行にnullポインタを取得しますtヌル。
これはとてもここに私の問題の減少した例であるが、私の短命コードの残りの部分である:
Entity.java
public class Entity {
public Entity() { }
}
Node.java
public class Node {
Entity e;
public Node(Entity e) {
this.e = e;
}
}
そして最後に私のメインクラス:
Driver.java
投稿で10public class Driver {
public static void main(String[] args) {
Grid g = new Grid(4, 4);
Entity e = new Entity();
g.addEle(e);
}
}
'this.grid = new ArrayList [x] [y];'は、** 'null' **' ArrayList'(s)でいっぱいの2次元配列を作成します。 –
@Elliott Frisch、Oh wow、それはばかげたミスです。しかし、私はサイズがゼロから始まると予想していたでしょう。これに関して論理的な方法があるのですか、別のデータ構造を使用する必要がありますか?私はその特定の配列に多くの要素を追加することを計画していますので、nullを処理するために反復処理を行うことは効率が悪いと感じています。 – DontKnockNow
私は実際に何かのようにしようとしています。List [] [] grid = new ArrayList [x] [y];しかし、Javaは試してみると逆転しています。 –
DontKnockNow