将卡片的前半部分移入firstHalf
 //这可能会或可能不会在一行代码中完成
      将卡片中的剩余元素移至secondHalf
 //这可能会或可能不会在一行代码中完成
      虽然firstHalf中有元素
         在firstHalf的开头删除元素,然后将其添加到卡片中
         在secondHalf的开头删除元素并将其添加到卡片中
      末了
      如果secondHalf剩余任何元素
         在secondHalf的开头删除元素并将其添加到卡片中
      万一

这是我得到的错误。如果我要删除,为什么列表会增加?我应该在第一个for循环中做这样的事情吗?
firstHalf.add(cards.remove(0));
cards = firstHalf.add(cards.remove(0));

这是我得到的错误
shuffle()不应更改卡中元素的数量。卡片包含完整的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));
    }
}*

最佳答案

您需要清除cards,因为卡片仍然具有以前添加到secondHalf的元素

secondHalf.addAll(cards);
cards.clear();
//^^^^^^^^^^^^

10-08 18:39