Java:初始化一个新的LinkedList集合

时间:2014-03-23 18:17:07

标签: java collections linked-list

我正在努力建立一个简单的纸牌游戏作为个人练习。我有一个应该包含我的套牌的集合Cards。为了初始化它,我想传递一个甲板应该是什么样子的地图 - 一个整数数组(1到n,1到2),其中(n,1)包含在卡类中解析的卡类型,以及(n,2)包含我在牌组中想要的牌数。但是,我遇到了NullPointer异常的困难。这是我的Cards课程:

import java.util.LinkedList;

public class Cards{
    private LinkedList<Card> CardDeck;

  ...

    public boolean MakeDeck(int[][] DeckMap){
        /*feed the function a 2D int array (0 to n, 0 to 1)

        @Param - DeckMap[][] - [n][0] to contain card type
        [n][1] to contain DupeCount*/

        //search the array for duplicates
        for (int i = 0; i < DeckMap.length; i++){
            int hold = DeckMap[i][0];
            DeckMap[i][0] = -10;
            for (int j = 0; j< DeckMap.length; j++){        
                if (DeckMap[j][0] == hold){
                    DeckMap[i][0] = hold;
                    return false;
                }       
            }
            DeckMap[i][0] = hold;
        }

        //Add the cards
        // tried variations on this: CardDeck = new LinkedList<Card>;
        for (int i = 0; i< DeckMap.length; i++){
            Card cC = new Card();
            cC.initializeCard(DeckMap[i][0], DeckMap[i][1]);
            CardDeck.addLast(cC);
        }
        return true;


    }
}

NullPointer错误发生在cC.addLast行 - 因为我初始化了Card类,Null指针应该引用CardDeck LinkedList我要添加Card我认为。但我无法弄清楚如何初始化列表。或者是.initializeCard调用问题(下面的代码)?如果我错过了一些显而易见的事情,请提前感谢您的帮助和道歉。

错误:

显示java.lang.NullPointerException     at towergame.Cards.MakeDeck(Cards.java:75)

  public class Card {

        private static String cName;
        private static int cDuplicateCount;
        public static cEffect myEffects;

        public final void initializeCard(int inEffect, int DupeCount){
            myEffects = new cEffect();
            myEffects.setEffect(inEffect);
            cName = myEffects.getCardType();
            cDuplicateCount = DupeCount;
        }
     ...
   }

1 个答案:

答案 0 :(得分:2)

而不是private LinkedList<Card> CardDeck;

使用此private LinkedList<Card> CardDeck = new LinkedList<Card>();

它正在抛出NPE,因为cardDeck尚未初始化。