我正在制作纸牌游戏,其中一种套牌方法看起来像这样
public Cards getCardFromDeck() {
if (arrayOfCards.get(0) == null) {
makeDeck();
shuffleDeck();
}
Cards topOfTheDeck = arrayOfCards.get(0);
arrayOfCards.remove(0);
return topOfTheDeck;
}
arrayOfCards
是一个链接列表,我填写了52张卡片。
现在的问题是,当我在main方法中调用getCardFromDeck
时,这完全正常。
但是当我尝试通过另一个类访问它时 我的方法如下所示
public void addToHand() {
hand.add(deck.getCardFromDeck());
}
我在线程“main”中得到了Exception
java.lang.IndexOutOfBoundsException:Index:0,Size:0
我认为该数组是空的。
为什么这个?
当我从deck类访问它时,数组被填充,这是方法所在但不是我从玩家类访问时
下面是我的整个甲板课package com.jc.blackjack;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class Deck {
private List<Cards> arrayOfCards = new LinkedList<>();
public void makeDeck() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 13; j++) {
Cards card = new Cards(i, j);
arrayOfCards.add(card);
}
}
}
public void callDeck() {
for (Cards arbCards : arrayOfCards) {
System.out.println(arbCards);
}
}
public void shuffleDeck() {
Collections.shuffle(arrayOfCards);
}
public Cards getCardFromDeck() {
if (arrayOfCards.get(0) == null) {
makeDeck();
shuffleDeck();
}
Cards topOfTheDeck = arrayOfCards.get(0);
arrayOfCards.remove(0);
return topOfTheDeck;
}
}
答案 0 :(得分:1)
您正在测试链接列表是否为空,方法是通过调用get(0)
并测试null来询问第一个元素。这将导致IndexOfOutBoundsException。
如果您想知道链表是否没有卡片,您可以询问它的尺寸:
if(arrayOfCards.size() == 0)
...或者您可以致电isEmpty()
:
if(arrayOfCards.isEmpty())