首页 > 解决方案 > 使用列表的删除和添加方法

问题描述

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

这是我得到的错误。如果我要删除,为什么我的列表会增长?我应该在我的第一个 for 循环中做这样的事情吗? firstHalf.add(cards.remove(0));
卡片= 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));
    }
}*

标签: java

解决方案


你需要清除cards因为卡片仍然有之前添加到的元素secondHalf

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

推荐阅读