我在java中有这三个类,我遇到了数组列表的问题.为什么数组列表用最后一个条目替换所有元素?
arraylist.java
import java.util.ArrayList;
public class arraylist {
public ArrayList<Circle> circles = new ArrayList<Circle>();
}
Run Code Online (Sandbox Code Playgroud)
circle.java
public class Circle {
public int x;
public int y;
}
Run Code Online (Sandbox Code Playgroud)
run.java
public class run {
public static void main(String[] args) {
arraylist ar=new arraylist();
Circle c = new Circle();
Scanner s = new Scanner(System.in);
for (int i = 0; i <= 2; i++)
{
c.x = s.nextInt();
c.y = s.nextInt();
boolean status = ar.circles.add(c);
if (status)
System.out.print("added to circles ...");
}
System.out.print("########################################");
for (Circle c2:ar.circles)
{
System.out.print("\nx=" + c2.x + " y=" + c2.y);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Circle在for循环开始之前,您只创建了一个.您Circle每次循环都添加相同的对象.此外,您Circle每次都在更改该属性,以便最后一个圆的属性是在一个对象中仍然可见的属性.
相反,Circle在for循环内创建一个新对象,每次迭代一个.
Scanner s = new Scanner(System.in);
for (int i = 0; i <= 2; i++)
{
Circle c = new Circle();
Run Code Online (Sandbox Code Playgroud)