我想在丢弃堆的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];
}
}
答案 0 :(得分:0)
您的addingCards
没有按照您的想法行事。它必须是这样的:
public void addingCards() {
for (int i = countDiscard; i > 0; i--) {
discardCards[i] = discardCards[i - 1];
}
}
您需要将所有卡片向上移动一张以便为新丢弃卡片腾出空间。要做到这一点,你的循环必须从最后开始并向后工作。
然而,这要求弃牌堆总是足以容纳所有牌。
您最好使用Deque这是一个双端队列,这样您就可以在任何一端添加/删除它,它会增长以满足您的需求。