gpt4 book ai didi

java - for循环中的数组列表

转载 作者:行者123 更新时间:2023-12-01 15:29:07 24 4
gpt4 key购买 nike

所以我有 2 个数组列表(player1List 和player2List),每个数组都有 26 个整数。我通过一个 for 循环来运行它们,比较每个中的两个数字。如果一个列表中的数字大于另一个列表中的数字,则较小的数字将添加到获胜列表中。然而,当我在某个点通过 for 循环运行它时,我得到一个“indexOutOfBoundsException:索引 21:大小 21”。如何运行循环直到其中一个数组列表为空?这是我的代码。

    for (int i = 0; i < player1List.size; i++){
if (player1List.get(i) < player2List.get(i)){
System.out.printf("Player 1: %d\n", player1List.get(i));
System.out.printf("Player 2: %d\n", player2List.get(i));
System.out.printf("Player 2 wins round!\n");
player2List.add(player1List.get(i));
player1List.remove(player1List.get(i));
}
if (player1List.get(i) > player2List.get(i)){
System.out.printf("Player 1: %d\n", player1List.get(i));
System.out.printf("Player 2: %d\n", player2List.get(i));
System.out.printf("Player 1 wins round!\n");
player1List.add(player2List.get(i));
player2List.remove(player2List.get(i));
}
if (player1List.get(i) == player2List.get(i)){

System.out.printf("Player 1: %d\n", player1List.get(i));
System.out.printf("Player 2: %d\n", player2List.get(i));
System.out.printf("It's a tie, cards return to your deck.\n");

}
if (player1List.isEmpty()){
System.out.printf("Player 2 wins the game.\n");
break;
}
if (player2List.isEmpty()){
System.out.printf("Player1 wins the game.\n");
break;
}
}

我已经问过类似的问题,但是,这更缩小到我需要的范围。

最佳答案

如果您需要向集合添加中间内容,以便在下一次迭代中发挥作用,那么您需要确保索引正确。持有两个柜台。删除时 - 不要增加。检查列表是否不大于当前索引。

正如您所看到的 - 当涉及索引时,迭代时删除和添加会使事情变得更加复杂。这就是为什么更好的解决方案是使用迭代器:

Iterator<Foo> it1 = list1.iterator();
Iterator<Foo> it2 = list2.iterator();

while(it1.hasNext() && it2.hasNext()) {
Foo foo1 = it1.next();
Foo foo2 = it2.next();
if (..) {
it2.remove();
}
}

当您需要添加到其中一个集合时,请改为添加到新集合,这不会干扰迭代。

关于java - for循环中的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com