将卡的前半部分移到firstHalf中 //这可能会或可能不会在一行代码中完成 将卡片中的剩余元素移至secondHalf //这可能会或可能不会在一行代码中完成 虽然firstHalf中有元素 在firstHalf的开头删除元素,然后将其添加到卡片中 在secondHalf的开头删除元素并将其添加到卡片中 末了 如果secondHalf剩余任何元素 在secondHalf的开头删除元素并将其添加到卡片中 EndIf
这是我遇到的错误。如果我要删除,为什么列表会增加?我应该在第一个for循环中做这样的事情吗?
firstHalf.add(cards.remove(0));
cards = firstHalf.add(cards.remove(0));
这是我遇到的错误
shuffle()不应更改卡中元素的数量。纸牌包含一个完整的52张纸牌,但现在的尺寸为:71个预期值:<52>但为:<71>
public void shuffle(ListGenerator gen) {
List<PlayingCard> firstHalf = gen.createNewList();
List<PlayingCard> secondHalf = gen.createNewList();
for (int i = 0; i <= (cards.size() / 2); i++) {
firstHalf.add(cards.remove(0));
}
secondHalf.addAll(cards);
while (firstHalf.isEmpty() == false) {
cards.add(firstHalf.remove(0));
cards.add(secondHalf.remove(0));
}
if (secondHalf.isEmpty() == false) {
cards.add(secondHalf.remove(0));
}
}*
答案 0 :(得分:3)
您需要清除cards
,因为卡仍然具有先前添加到secondHalf
的元素
secondHalf.addAll(cards);
cards.clear();
//^^^^^^^^^^^^
答案 1 :(得分:1)
致电secondHalf.addAll(cards);
时,并没有从cards
中删除这些卡。此后添加:
cards.clear();
答案 2 :(得分:1)
您正在使用相同的变量,即在for循环中使用card,并且还从同一card变量中删除了该项目。因此,实际上您在firstHalf中添加的元素数量较少,并且卡的大小仍超过其原始大小的一半。
for (int i = 0; i <= (cards.size() / 2); i++) {
firstHalf.add(cards.remove(0));
}
for循环之后:: 18
的firstHalf的大小for循环后的卡的大小:: 34
您应该为循环使用其他变量。 喜欢:
List<Integer> cardSize = cards.size();
for (int i = 0; i <= (cardSize / 2); i++) {
firstHalf.add(cards.remove(0));
}
我相信它应该可以解决您的问题。
答案 3 :(得分:0)
我希望
secondHalf.addAll(cards);
不从卡中删除条目。在该行之后添加测试以查看卡是否为空。
答案 4 :(得分:0)
secondHalf.addAll(cards)
在这里,您要将元素添加到secondHalf中,但没有删除卡片中的元素。将以下行添加到代码中。
cards.clear();