0

我有一个 ArrayLists 的 HashMap 值,但是当我添加 ArrayLists 时 HashMap 保持为空,然后当我尝试 get() ArrayList 时抛出 NullPointerException。很迷茫。

Random rand = new Random();
HashMap<String,ArrayList<Integer>> hands = new HashMap<String,ArrayList<Integer>>();
HashMap<Integer, Boolean> deck = new HashMap<Integer, Boolean>();

for(int x=0;x<4;x++){
    for(int y=0;y<4;y++){
    hands.put(x+SUITS[x], new ArrayList<Integer>());
    }
}       
    for(int x=0;x<4;x++){
        for(int y=0;y<13;y++){
            int randCard = rand.nextInt(52)+1;
            if(!deck.containsKey(randCard)){
                deck.put(randCard, true);

                hands.get(x+cardSuit(randCard)).add(randCard);

            }else y--;
        }
    }
4

2 回答 2

5

您正在使用如下所示的键将值放入地图中:

someInt + ""

您正在使用如下所示的键从地图中获取值:

someInt + cardSuit(randCard)

除非 cardSuit 总是返回一个空字符串,否则它们将是不同的键。

于 2013-02-27T04:37:02.137 回答
3

这里 cardSuit(randCard) 正在返回地图中没有的东西。

你把 x+"" 钥匙当作钥匙。

但是,当您检索时,您正在使用它:

x+"something"

于 2013-02-27T04:35:10.120 回答