在编写程序时遇到了一些麻烦,以模拟纸牌游戏“Top Trumps”,更具体地说,将每张卡片的属性添加到ArrayList由我的班级持有。For循环,多个对象实例化并将对象添加到ArrayList问题
for (int i=1; i<5;i++)
{
int tempVal = rn.nextInt(10);
Card.attrbts.add(new Attribute ("Attribute "+i, tempVal));
System.out.println("Name: "+Attribute.name + " Value: " + tempVal); //debug
}
该程序应该随机生成每个属性的值,为简单起见,我只是命名每个属性'属性+我'。
循环大多数情况下按预期执行,值和名称的生成方式正如我从调试语句中可以看到的,但是,当此循环向我的Card类中的ArrayList添加元素时,它使用相同的名称以及列表中每个元素的值,特别是我for循环的最终迭代(例如属性4和6)。
我想知道你们中的一位能否帮助我解释为什么会发生这种情况,以及我会如何解决它?
干杯
编辑:
public class Card {
static ArrayList<Attribute> attrbts = new ArrayList<Attribute>();
String name;
public Card(String n, ArrayList<Attribute>attr)
{
this.name = n;
this.attrbts = attr;
}
public class Attribute {
static String name;
static int val;
public Attribute(String n, int v){
this.name = n;
this.val = v;
}
你的'Card'和'Attribute'类是怎么样的? –
什么是Card.attrbts? – PeterMmm
我已更新问题 – fornax666