我正在尝试将名为 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)
为什么我会得到这样的结果?我怎么能修好呢?
提前致谢!
答案 0 :(得分:13)
您应该将City
类的成员更改为非静态:
public int x;
public int y;
静态成员在类的所有实例之间共享,因此所有实例都具有相同的值。
答案 1 :(得分:7)
x
中的y
和City
个变量标记为static
。 static
成员在class
的所有实例之间共享,因此是全局变量。您需要对代码进行一些更改:
x
和y
个变量的声明更改为private int x
和private int y
。理想情况下,类的字段不应为public
。有关详细说明,请参阅this答案。getX
课程中添加getY
和City
方法。main
方法中,使用x
和y
访问getX
和getY
。