2016-02-10 104 views
2

我試圖將一些結果數組插入到2d數組。但最後我只得到所有的2d數組,我插入了最後一組數組到我的2d數組中。當我調試並檢查代碼時,我發現每次執行此操作時,bmma數組的所有數組都會隨着新賦值而變化。將數組插入到2d數組

這裏是我實現的完整代碼。

double[][] newDATA ; 
double [][] bmma = new double[100][]; 

double [] number = new double[12]; 
int il=0; 
    String fname = "newAudio.wav"; 

    RawAudioFileStream rawAudio = new RawAudioFileStream(fname); 
    StreamHeader mh = mfccm.init(rawAudio.getHeader()); 
    MatrixFileStream out = new MatrixFileStream(fname + ".txt", true); 
    out.setMultiLine(true); 
    out.setHeader(mh); 


    while (true) { 
    StreamFrame f = mfccm.process(rawAudio.recvFrame()); 

    if (f == null) { 
     break; 
    } 

    if(((MatrixHeader.MatrixFrame)f).data != null){ 

     for (int i=0;i<12;i++){ 

     newDATA=((MatrixHeader.MatrixFrame)f).data; 
     number[i]=newDATA[i][0]; 

     } 

     bmma[il]=number; 
     il++; 
    } 

任何幫助將高度讚賞克服這個問題。

回答

1

你只需要分配給number一個陣列(你在這裏實例化一個 - double [] number = new double[12];),你多次分配該數組的bmma二維數組,所以二維數組中的所有行會是相同的。很多

number = new double[12]; 
    for (int i=0;i<12;i++){ 

    newDATA=((MatrixHeader.MatrixFrame)f).data; 
    number[i]=newDATA[i][0]; 

    } 

    bmma[il]=number; 
+1

我甚至不能知道我這樣做簡單的錯誤:(感謝您的幫助工作的一個沉重的最後期限無話:

您應該創建二維陣列的每行一個新的數組。說。 – d7k