Array List用最后一个替换所有元素

sia*_*ndi 1 java arraylist

我在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)

rge*_*man 9

Circlefor循环开始之前,您只创建了一个.您Circle每次循环都添加相同的对象.此外,您Circle每次都在更改该属性,以便最后一个圆的属性是在一个对象中仍然可见的属性.

相反,Circlefor循环内创建一个新对象,每次迭代一个.

Scanner s = new Scanner(System.in);
for (int i = 0; i <= 2; i++)
{
    Circle c = new Circle();
Run Code Online (Sandbox Code Playgroud)