如何将2个Point3f数组连接在一起?

我已经尝试过了,但是它返回空指针异常:(

private Point3f[] combineRings(Point3f[] a, Point3f[] b){
    int size = a.length+b.length;
    System.out.println("Size = "+size);
    Point3f[] c = new Point3f[size];
    for(int i = 0, j = 0; i < size; i+=2, j++){

        c[i].x = a[j].getX();
        c[i].y = a[j].getY();
        c[i].z = a[j].getZ();

        c[i+1].x = b[j].getX();
        c[i+1].y = b[j].getY();
        c[i+1].z = b[j].getZ();

        // Debugging
        System.out.println(i+"\t"+j+"\t"+c[i]+"\t"+a[j]+"\t"+c[i++]+"\t"+b[j]);
    }
    return c;
}


谢谢。

最佳答案

数组是空的,直到您将对象放入其中。您的代码假定您可以立即分配给c[i].x,但是由于c[i]中没有对象,因此您会得到一个NullPointerException

我不知道您是否要将数组中的对象复制到新对象中,还是只想复制引用,以便两个数组都指向相同的对象。第二个很简单:

System.arraycopy(a, 0, c, 0, a.length);
System.arraycopy(b, 0, c, a.length, b.length);


如果是第一个,使用Point3f复制构造函数会简单得多:

for (int i=0; i<a.length; ++i)
    c[i] = new Point3f(a[i]);

for (int i=0; i<b.length; ++i)
    c[i+a.length] = new Point3f(b[i]);

10-08 02:53