2016-05-02 43 views
0

因此,我正在編寫一個程序,我希望它將向量中的所有元素設置爲指定的值並指定新的向量長度。這是到目前爲止我的代碼:統一設置方法不起作用

public static Vector uniform(int length, long value) { 

    Vector vector = new Vector(length); 

    for (int i = 0; i < length; i ++) { 
     vector.elements[i] = this.value; 
    } 
    return this.vector; 
} 

然而,當這個程序運行時,在矢量所有的號碼都設置爲指定的值,但它不會改變陣列本身的整數數量。我如何修復我的代碼以顯示此內容?

+0

'vector.elements [i]'應該不會編譯,因爲沒有'elements'屬性,甚至沒有protected/private一。我想你的意思是'vector.add(value)'(注意'new Vector(length)'將創建一個具有初始_capacity_長度的向量 - 在構建之後它仍然是空的)。除了'Vector'已經過時了,爲什麼不用'ArrayList'呢? – Thomas

+0

你應該避免將你的類命名爲一個常見的內建類型。 'Vector'是一個內置的類。因爲你有自己的東西,所以沒有辦法知道你需要修復什麼。 –

+0

'uniform'創建另一個新的Vector--可能是誤解?另一個評論:更好地使用長期i.o.長,也許用'布爾計算;'。由於需要長時間裝箱/取消裝箱,並且可能會進行空檢查,所以長度要慢得多。 –

回答

0

使用統一代碼,您需要構建一個新的Vector vector,然後編寫一個遍歷vector的每個單元的循環,然後在構造函數中爲每個元素指定具有指定值的元素。完成後,返回生成的向量,如下所示:

Vector vector = new Vector(length); 

for (int i = 0; i < length; i++) { 
    vector.elements[i] = value; 
} 

return vector;