gpt4 book ai didi

java - 使用增强的 for 循环时更改数组列表大小

转载 作者:行者123 更新时间:2023-11-30 03:35:31 27 4
gpt4 key购买 nike

我正在尝试玩 war ,每当你比较两张牌时if(c.getValue() > Player2.get(x).getValue()){...我正在寻找获胜者,并将玩家一的牌和玩家二的牌重新分配到保留堆中,ArrayList<Card> Pile = new ArrayList<Card>(); ,然后根据 boolean 值将该堆分配给获胜者,但是控制台抛出“concurrentModificationException”我不知道有任何其他方法可以解决此问题。在比较两个对象的数组列表后,如何添加到不断变化的大小的数组列表中?

import java.util.ArrayList;

public class Deck {
ArrayList<Card> deck = new ArrayList<Card>();
ArrayList<Card> player1 = new ArrayList<Card>();
ArrayList<Card> player2 = new ArrayList<Card>();
ArrayList<Card> pile = new ArrayList<Card>();
boolean winner;

public Deck(){

}
public void createDeck(){
for(int i =0; i<4; i++){
for(int j =1; j<15;j++){
if(i==0) deck.add(new Card("Spades", j));
if(i==1) deck.add(new Card("Hearts", j));
if(i==2) deck.add(new Card("Clubs", j));
if(i==3) deck.add(new Card("Diamonds",j));

}
}
}
public void splitDeck(){
for(int i = 0; i< 52;i++){
int r = (int) (Math.random()*(51-i));
if(i%2==0){
player1.add(deck.get(r));
}
else{
player2.add(deck.get(r));
}
deck.remove(r);
}

}
public int [] war(){

int[]score = {0,0};

for(Card c : player1){
int x = player1.indexOf(c);
if(c.getValue() > player2.get(x).getValue()){
winner = true;
score[0]++;
pile.add(player1.get(x));
pile.add(player2.get(x));
distributeCards();
}
else if(c.getValue() <player2.get(x).getValue()) score[1]++;
distributeCards();
}

return score;
}

public void distributeCards(){

if(winner==true){
for(int i = 0; i<pile.size(); i++){
player1.add(pile.get(i));
}
}
else{
for(int i = 0; i<pile.size(); i++){
player2.add(pile.get(i));
}
}
}


public String warGame(){
String print= "";
for(Card c : player1){
int x = player1.indexOf(c);
if(c.getValue() > player2.get(x).getValue()){

print+= "\n"+"Player1 won";
}
else if(c.getValue() <player2.get(x).getValue())
print+="\n"+"Player2 won";

else if(c.getValue() ==player2.get(x).getValue())
print+= "\n"+"Its a tie";
}

return print;

}

}

控制台出错

Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at Deck.war(Deck.java:69)
at War.main(War.java:6)

最佳答案

您还可以尝试ListIterator它在迭代过程中支持删除/添加方法。

关于java - 使用增强的 for 循环时更改数组列表大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28007362/

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