Java 为什么我的arraylist只填充了一个元素?
当打印出代码中的f(i).x时,将显示右侧的x值。但是,当我尝试获取例如:points.get(2).x或任何其他值时,我总是得到相同的x值。任何帮助都会很棒 主要类别: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) {
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_;
}
}