gpt4 book ai didi

java - 为什么最后一个对象在 ArrayList 中被复制多次?

转载 作者:搜寻专家 更新时间:2023-11-01 01:02:08 28 4
gpt4 key购买 nike

我正在尝试将名为City 的对象添加到ArrayList。这是类的代码

public class City {

public static int x;
public static int y;

City(){
Random rand = new Random();
this.x = rand.nextInt(100)+1;
this.y = rand.nextInt(100)+1;
}
}

这是我的主类

的代码
    public static int N = 10;
public static ArrayList<City> cities = new ArrayList<City>();

public static void main(String[] args) {

for (int i=1; i<N; i++){
cities.add(new City());
}

for (City c : cities)
System.out.print("("+c.x+", "+c.y+")");
}

}

println 的结果始终相同,数组列表 似乎只存储最后添加到其所有元素中的对象。

例如我运行程序时得到的结果是:

(52, 93)(52, 93)(52, 93)(52, 93)(52, 93)(52, 93)(52, 93)(52, 93)(52, 93)

为什么我会得到这样的结果?我该如何解决?

提前致谢!

最佳答案

您应该将 City 类的成员更改为非静态的:

public int x;
public int y;

静态成员在类的所有实例之间共享,因此所有实例都将具有相同的值。

关于java - 为什么最后一个对象在 ArrayList 中被复制多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30589034/

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