Java 向ArrayList添加元素

Java 向ArrayList添加元素,java,arraylist,lwjgl,Java,Arraylist,Lwjgl,我试着写一个类,它应该创建一个圆柱体。但是当我尝试绘制ArrayList时,其中有180个对象具有相同的值。当我尝试将四边形添加到我的ArrayList时,我不明白那里出了什么问题 您已经将CordN变量设置为静态,因此每个字段只有一个值,在类的所有实例之间共享。因此,每次创建类的新实例时,都会覆盖以前的值 移除静态修改器 另外,请注意,将成员变量设置为final是一种很好的做法,除非您绝对需要它们为final。这里的情况似乎不是这样,所以将它们设置为final-这会自动抓住您的问题,因为您无法

我试着写一个类,它应该创建一个圆柱体。但是当我尝试绘制ArrayList时,其中有180个对象具有相同的值。当我尝试将四边形添加到我的ArrayList时,我不明白那里出了什么问题

您已经将CordN变量设置为静态,因此每个字段只有一个值,在类的所有实例之间共享。因此,每次创建类的新实例时,都会覆盖以前的值

移除静态修改器


另外,请注意,将成员变量设置为final是一种很好的做法,除非您绝对需要它们为final。这里的情况似乎不是这样,所以将它们设置为final-这会自动抓住您的问题,因为您无法在构造函数中重新分配静态final字段。

您是否尝试过System.out.printlneins;System.out.printlnzwei;等等,并检查它们是否相同?你确定每次都指定不同的值吗?我通过改变for循环中的值来测试,每次我绘制时,我都会得到圆柱体的另一部分。但是我不能一次画出整个圆柱体。Quad是你定义的类吗?它的成员是静态的吗?请添加该类的代码。如果它们是静态的,则使它们成为非静态的。
public class Planet {
    public static ArrayList<Quad> createRing(int x, int y, int z, int radius) {
        ArrayList<Quad> quads = new ArrayList<Quad>();
        for (int i = 0; i < 360; i++) {
            float x1 = (float) (Math.sin(Math.toRadians(i)) * radius);
            float y1 = (float) (Math.cos(Math.toRadians(i)) * radius);
            i++;
            float x2 = (float) (Math.sin(Math.toRadians(i)) * radius);
            float y2 = (float) (Math.cos(Math.toRadians(i)) * radius);

            quads.add(new Quad(new Vector3f(x1, y1, 4), new Vector3f(x2, y2, 4), new Vector3f(x2, y2, 0),
                    new Vector3f(x1, y1, 0)));
        }
        return quads;
    }
}

----QUAD.java

import org.lwjgl.opengl.GL11;
import org.lwjgl.util.vector.Vector3f;

public class Quad {
//have to be non-static
static Vector3f Cord1; 
static Vector3f Cord2;
static Vector3f Cord3;
static Vector3f Cord4;
//have to be non-static
public Quad(Vector3f cord1,Vector3f cord2,Vector3f cord3,Vector3f cord4) {
Cord1 = cord1;
Cord2 = cord2;
Cord3 = cord3;
Cord4 = cord4;
}
public void draw() {
//GL11.glBegin(GL11.GL_QUADS);
GL11.glColor3f(1, 0, 0);
GL11.glVertex3f(Cord1.x, Cord1.y, Cord1.z);
GL11.glVertex3f(Cord2.x, Cord2.y, Cord2.z);
GL11.glVertex3f(Cord3.x, Cord3.y, Cord3.z);
GL11.glVertex3f(Cord4.x, Cord4.y, Cord4.z);
}
public void out() {

System.out.println(Cord1.x+" "+ Cord1.y+" "+ Cord1.z);
System.out.println(Cord2.x+" "+ Cord2.y+" "+ Cord2.z);
System.out.println(Cord3.x+" "+ Cord3.y+" "+ Cord3.z);
System.out.println(Cord4.x+" "+ Cord4.y+" "+ Cord4.z);
}
}
public class Quad {
static Vector3f Cord1;
static Vector3f Cord2;
static Vector3f Cord3;
static Vector3f Cord4;
public Quad(Vector3f cord1,Vector3f cord2,Vector3f cord3,Vector3f cord4) {
Cord1 = cord1;
Cord2 = cord2;
Cord3 = cord3;
Cord4 = cord4;
}