我正在创建自己的Vector类,它能够执行许多不同的计算。但是我似乎遇到了障碍。我有一些方法,如排序,标量加/乘和反转方法,我需要执行,但是我想先创建一个向量的副本,以便我可以修改它。 这是我的排序方法的代码作为一个例子:
Vector vector = new Vector(length);
for (int i = 0; i < length - 1; i++) {
for (int j = i + 1; j < length; j++){
if (vector.elements[i] > vector.elements[j]) {
long temp = vector.elements[i];
vector.elements[i] = vector.elements[j];
vector.elements[j] = temp;
}
}
}
return vector;
在上面的代码中,每当我似乎运行它时,输出始终为0.但是我知道我需要创建用户输入的矢量克隆并将其存储在Vector "vector"
对象中。
我怎样才能做到这一点?
我所拥有的实例变量如下:
public class Vector {
private Long sum;
private Long mode;
private Long median;
private Long minimum;
private Long maximum;
private final int length;
private final long[] elements;
public Vector(int length) {
this.sum = null;
this.mode = null;
this.median = null;
this.minimum = null;
this.maximum = null;
this.length = length;
this.elements = new long[length];
答案 0 :(得分:2)
您只需要一个复制构造函数,即Vector(Vector other)
:
this.sum = other.sum;
等分配所有标量字段; 使用以下方式分配数组字段:
this.elements = Arrays.copyOf(other.elements, other.elements.length);
(不清楚为什么需要length
字段,因为elements.length == length
- 只需使用elements.length
)