如何将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]);