【发布时间】:2016-01-19 20:02:44
【问题描述】:
所以,当我尝试向 ArrayList 添加 Trick 时,添加的 Trick 会覆盖 ArrayList 中已有的内容,因此 ArrayList 中的所有元素都包含我刚刚添加的 Trick。
这些方法在我的主类中:
public Trick playTrick(Player firstPlayer){
Trick t=new Trick(firstPlayer.getID());
return t;
}
public void playGame(){
for(int i=0;i<NOS_TRICKS;i++){
Trick t=playTrick(players[firstPlayer]);
players[firstPlayer].update(t);
//System.out.println(t.completedTricks);
}
}
当调用 player[firstPlayer].update(t) 时发生错误,update(t) 将 Trick t 添加到我的 ArrayList:
public class BPlayer implents Player{
public void update(Trick t){
this.strategy.updateData(t);
}
}
然后触发 updateData:
public class AdvStrategy implements Strategy{
public static ArrayList<Trick> completedTricks = new ArrayList<>();
@Override
public void updateData(Trick c) {
completedTricks.add(c);
}
}
打印 ArrayList 时的输出示例:
Trick ={3=KING DIAMONDS, 0=TWO DIAMONDS, 1=THREE DIAMONDS, 2=FIVE DIAMONDS}
Lead =3 Winner =3 DIAMONDS
ARRAYLIST[{3=KING DIAMONDS, 0=TWO DIAMONDS, 1=THREE DIAMONDS, 2=FIVE DIAMONDS}]
Trick ={3=QUEEN DIAMONDS, 0=FOUR DIAMONDS, 1=SIX DIAMONDS, 2=TEN DIAMONDS}
Lead =3 Winner =3 DIAMONDS
ARRAYLIST[{3=QUEEN DIAMONDS, 0=FOUR DIAMONDS, 1=SIX DIAMONDS, 2=TEN DIAMONDS}, {3=QUEEN DIAMONDS, 0=FOUR DIAMONDS, 1=SIX DIAMONDS, 2=TEN DIAMONDS}]
工作时最后一行输出应该是这个...
ARRAYLIST[{3=KING DIAMONDS, 0=TWO DIAMONDS, 1=THREE DIAMONDS, 2=FIVE DIAMONDS}, {3=QUEEN DIAMONDS, 0=FOUR DIAMONDS, 1=SIX DIAMONDS, 2=TEN DIAMONDS}]
【问题讨论】:
-
您遇到的错误是什么?
-
问题表明您正在重用现有技巧来设置卡片,而不是创建新技巧。但是,在提供的信息中看不到负责该问题的代码,因为您似乎认为
ArrayList有问题,而不是您自己的代码。
标签: java arrays arraylist collections