2016-05-05 22 views
1

我創建了自己的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]; 

回答

2

你只需要一個拷貝構造函數,即Vector(Vector other)

  • 分配全部採用this.sum = other.sum;等的標量場;
  • 使用指定數組字段:

    this.elements = Arrays.copyOf(other.elements, other.elements.length); 
    

(目前尚不清楚爲什麼你需要一個length場,因爲elements.length == length - 只需使用elements.length

+0

'''length'''似乎成爲模板的一部分:[鏈接](http://stackoverflow.com/questions/36954961/unsure-how-to-set-uniform-value-to-a-vector/36954985) –

+0

非常感謝您的答案! –