我不能为我的生活弄清楚为什么这个shuffle方法不起作用:
public void deckShuffle(int shuffle) {
Random rand = new Random();
int targetCard, cardValue, cardSuit;
Card temp, card;
for (int x = 0; x < shuffle; x++) {
for(int y = 1; y < 52; y++) {
targetCard = 51 - rand.nextInt(51);
temp = getCard(targetCard);
cardValue = temp.getCardValue();
cardSuit = temp.getCardSuit();
removeCard(targetCard);
addLast(cardValue, cardSuit);
}
}
以下是我的删除卡代码并添加最后一行:
public void removeCard(int index) {
if (head.next == null || index < 1) {return;}
if (count > 0 && index <= count) {
Card current = head;
for (int x = 0; x < index; x++) {
current = current.next;
}
current.next = current.next.next;
count--;
}
}
public void addLast(int cardValue, int cardSuit) {
Card temp = new Card(cardValue, cardSuit, null);
Card current = head; // POINTER
while (current.next != null) {
current = current.next;
}
current.next = temp;
count++;
}
我试图弄清楚为什么代码不起作用。当我运行一种方法来打印一副52张牌并将其洗牌时,这些牌都显示为2张牌。我知道这不是我的构建套牌方法,因为我在编写shuffle方法之前测试了它。
我发现了伙计们。我的删除卡方法不能正常工作,但现在它是如此甲板适当地洗牌。谢谢你的帮助!答案 0 :(得分:0)
为什么不使用Collections.shuffle
方法?
有关更多信息,您可以发布您的卡类吗?然后,至少有人可以尝试运行代码,如果他们愿意的话。
答案 1 :(得分:0)
if (head.next == null || index < 1) {return;}
我认为这不是你想要的。你应该想要:
if (head == null) return;
原始版本使得删除不起作用,因为当套牌中只有一张卡片时。
如果head
是固定的链接列表标题实例,则甚至删除此行。
答案 2 :(得分:0)
不应该&#39;吨
targetCard = 51 - rand.nextInt(51);
是
targetCard = rand.nextInt(52-y);
虽然这不会导致您描述的问题,但我相信您可能会遇到系统其他部分的问题