将卡添加到丢弃堆中

时间:2015-03-17 09:10:13

标签: java

我想在丢弃堆的TOP中添加一张卡片,弃牌堆上的剩余卡片将自动获得新卡片,我尝试了很多方法但是失败了,需要一些指导,不要;由于项目的要求,我想使用堆栈

public void setTop(Card c)//add a card to top of discard pile
{       
    if(this.discardCards[0] != null)
    {
        addingCards();
    }
    this.discardCards[0] = c;
    countDiscard++;     
}

public void addingCards()//pushing each cards to the back of the new card
{
    for(int i = 0; i <= countDiscard - 1; i++)
    {
        Card temp = new Card();
        discardCards[i+1] = discardCards[countDiscard - 1];
    }
}

1 个答案:

答案 0 :(得分:0)

您的addingCards没有按照您的想法行事。它必须是这样的:

public void addingCards() {
    for (int i = countDiscard; i > 0; i--) {
        discardCards[i] = discardCards[i - 1];
    }
}

您需要将所有卡片向上移动一张以便为新丢弃卡片腾出空间。要做到这一点,你的循环必须从最后开始并向后工作。

然而,这要求弃牌堆总是足以容纳所有牌。

您最好使用Deque这是一个双端队列,这样您就可以在任何一端添加/删除它,它会增长以满足您的需求。