Java 为什么我的arraylist只填充了一个元素?

Java 为什么我的arraylist只填充了一个元素?,java,arraylist,Java,Arraylist,当打印出代码中的f(i).x时,将显示右侧的x值。但是,当我尝试获取例如:points.get(2).x或任何其他值时,我总是得到相同的x值。任何帮助都会很棒 主要类别: import java.util.ArrayList; public class Main { public static ArrayList<Point> points = new ArrayList(); public static void main(String[] args) {

当打印出代码中的f(i).x时,将显示右侧的x值。但是,当我尝试获取例如:points.get(2).x或任何其他值时,我总是得到相同的x值。任何帮助都会很棒

主要类别:

import java.util.ArrayList;

public class Main {

    public static ArrayList<Point> points = new ArrayList();

    public static void main(String[] args) {

        for (float i = -5; i <= 5; i+=0.1) {
            points.add(f(i));

        }

        for (int i = 0; i < points.size(); i++) {
            System.out.println(points.get(i).x);
            // shows always the same number: 4.95...
        }

    }

    public static Point f(float x) {
        return new Point(x, (-0.15f*((x + -2.1f) * (x + -2.1f)) + 4.3f));
    }
}

当您在
类中将
x
y
定义为静态时,这就是导致所有点具有相同值的原因

静态成员属于类而不是特定实例, 这意味着,如果将成员设置为静态,则可以不使用 反对


为什么点中的字段是静态的?这是打字错误吗?@Carcigenicate,不,这不是打字错误。这正是为什么它不这样做的原因work@igorepst拼写有点错误。这就是它不起作用的原因,但是OP把
static
@Carcigenicate包含进来可能是一个简单的错误。我不认为static会对此产生任何影响。@SamOrozco是的。每次它们在
f
中创建新对象时,都会覆盖静态字段。当他们迭代点并打印
x
时,它将引用静态字段并始终打印相同的内容。
public class Point {

    public static float x;
    public static float y;

    public Point(float x_, float y_) {
        x = x_;
        y = y_;

    }

}