2014-04-07 180 views
-4

我需要一個延長數組的方法。所以如果數組是ABC,我想讓void方法使它成爲AABBCC。這是我到目前爲止的代碼:Java數組越來越多

public void lengthen(){ 
    double[]t = new double[samples.length]; 

    for(int i = 0;i<samples.length;i++){ 
     t[i] = samples[i]; 
    } 
    samples = new double[t.length*2]; 
    for(int i = 0; i < samples.length;i++){ 
     samples[(2*i)] = t[i]; 
     samples[(2*i)+1] = t[i]; 
    } 
} 
+1

所以:

可以用類似很簡單呢?你測試過它是否有效嗎? – noobProgrammer

+1

而你的問題是? – EJP

+1

似乎是功課 –

回答

0

您希望第二個數組僅增量最大的i/2因爲你是填補了循環主體中的兩個數組元素。

0

你的問題是,在雙級數組的索引你的循環迭代,並使用該指數單獨大小陣列,因此你出界外例外。

public void lengthen() { 
    // Create new array, twice as many elements. 

    double [] t = new double[samples.length * 2]; 

    // Transfers the elements, n -> 2n, 2n+1, n ranging from 0 to N-1 inclusive. 

    for (int i = 0; i < samples.length; i++) { 
     t[i*2] = samples[i]; // 0->0, 1->2, 2->4, ..., (N-1)->(2N-2). 
     t[i*2+1] = samples[i]; // 0->1, 1->3, 2->5, ..., (N-1)->(2N-1). 
    } 

    // Load into member variable. 

    samples = t; 
}