【问题标题】:Java: Initializing a new LinkedList CollectionJava:初始化一个新的 LinkedList 集合
【发布时间】:2014-03-23 18:17:07
【问题描述】:

我正在尝试构建一个简单的纸牌游戏作为个人练习。我有一个集合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 在 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;
        }
     ...
   }

【问题讨论】:

    标签: java collections linked-list


    【解决方案1】:

    而不是这个private LinkedList&lt;Card&gt; CardDeck;

    使用这个private LinkedList&lt;Card&gt; CardDeck = new LinkedList&lt;Card&gt;();

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 2012-05-05
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多