我意识到已经有很多这样的问题,但到目前为止,我所看到的每个问题都是未初始化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)
最佳答案
在构造函数Card(String, String, String)
中,引发了NullPointerException。
如带有行号的stacktrace所示。
如果其他构造函数Card()
进行了一些初始化,只需先在添加的构造函数内部调用this()
即可。
添加堆栈跟踪之后:
更正。
我敢打赌,运行代码仍使用rand
,该代码未初始化(空)。建造前先进行清洁。
还是在不同的程序包中有两个Deck类,显示的类在package hr.krypto.cardwars.deck;
中吗?
关于java - 添加到ArrayList时为NullPointer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15656901/