以下是一個方法,它將一個Card對象的ArrayList,deck作爲參數,設置第二個ArrayList,洗牌,能夠持有Card對象,然後隨機將卡片逐一挑出,將它們添加到第二個ArrayList。一旦該卡片空了,該卡片變量就會被分配一個對新填充的ArrayList的引用,該ArrayList被混洗。不過由於某種原因,當我發送這個方法的時候一個非空的ArrayList參數,它完全清空了卡組。爲什麼是這樣?爲什麼這個void方法清空卡組?
public static void shuffle(ArrayList<Card> deck)
{
Random randy = new Random();
ArrayList<Card> shuffled = new ArrayList<Card>();
while (!deck.isEmpty())
{
int c = randy.nextInt(deck.size());
shuffled.add(deck.remove(c));
}
deck = shuffled;
}
任何洞察力將不勝感激。
我猜你的'Deck.remove'函數最有可能是'void',並從'ArrayList'中移除一個'Card'對象。檢查'remove'函數是否實際返回一個'Card'對象。 – voidHead
@voidHead不,ArrayList.remove()方法返回對被刪除對象的引用。 – Jason