[英]getting index out of bounds when the array is not empty
我正在制作紙牌游戲,我的一種套牌方法看起來像這樣
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”中得到異常
java.lang.IndexOutOfBoundsException:索引:0,大小:0
我認為這是說數組為空。
為什么是這樣???
當我從甲板類中訪問數組時填充數組,這是方法所在的位置,但是從播放器類中訪問時數組沒有填充
下面是我的整個甲板課
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;
}
}
您正在通過調用get(0)
詢問第一個元素並測試null來測試鏈表是否為空。 這將導致IndexOfOutBoundsException。
如果要確定鏈接列表中是否沒有卡片,可以詢問其大小:
if(arrayOfCards.size() == 0)
...或者您可以調用isEmpty()
:
if(arrayOfCards.isEmpty())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.