![](/img/trans.png)
[英]Getting Nullpointer Exception by adding an Arraylist to another Arraylist
[英]NullPointer when adding to ArrayList
我意識到已經有很多這樣的問題,但到目前為止,我所看到的每個問題都是未初始化ArrayList。 我認為我的已初始化,但是在嘗試添加到列表時得到了NullPointer。 這是我的代碼:
import java.util.ArrayList;
import java.util.Random;
import java.util.Collections;
public class Deck {
static final int DECKSIZE = 48;
static final int MAX = 10;
static final int MIN = 1;
public ArrayList<Card> cardDeck = new ArrayList<Card>();
Random rand;
public Deck() {
initializeDeck();
}
private void initializeDeck() {
for (int i=0; i<DECKSIZE; i++) {
cardDeck.add(i, new Card("Name" + (i+1), "Race" + (i+1), "Orientation" + (i+1)));
}
}
public void shuffleCards() {
Collections.shuffle(cardDeck);
}
}
這是堆棧跟蹤,告訴我initializeDeck是nullPointer
Caused by: java.lang.NullPointerException
at hr.krypto.cardwars.deck.Deck.initializeDeck(Deck.java:24)
at hr.krypto.cardwars.deck.Deck.<init>(Deck.java:15)
at hr.krypto.cardwars.deck.Dealer.<init>(Dealer.java:14)
at hr.krypto.cardwars.model.CardTable.<init>(CardTable.java:15)
at hr.krypto.cardwars.screen.GameScreen.show(GameScreen.java:31)
at com.badlogic.gdx.Game.setScreen(Game.java:62)
at hr.krypto.cardwars.CardWarsGame.create(CardWarsGame.java:19)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:127)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:110)
考慮到方法ArrayList.add(index, Element)
僅拋出IndexOutOfBoundsException
因此錯誤必須在卡類的構造函數中。
猜測最快的方法是調試到卡類構造函數中。
在構造函數Card(String, String, String)
內部,引發了NullPointerException。 如帶有行號的stacktrace所示。
如果其他構造函數Card()
一些初始化,只需首先在添加的構造函數中調用this()
。
添加堆棧跟蹤之后:
更正 。 我敢打賭,在運行代碼中仍使用rand
,未初始化(空)。 建造前先進行清潔。
或者在不同的包中有兩個Deck類,在package hr.krypto.cardwars.deck;
顯示的類是package hr.krypto.cardwars.deck;
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.