簡體   English   中英

添加到ArrayList時為NullPointer

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM