2012-10-19 148 views
1

我一直在試圖將Double ArrayList轉換爲Double Array,反之亦然。將ArrayList <Double>轉換爲Double Array,反之亦然JAVA/Android

這是我用於將Double ArrayList轉換爲Double Array的代碼,但程序不斷崩潰。 我錯過了什麼嗎?或者邏輯錯誤在一起?

ArrayList<Double> numsy = new ArrayList<Double>(); 
ArrayList<Double> numsx = new ArrayList<Double>(); 
for (int j = 0; j < 100; j++) { 
    numsy.add((double)generator.nextFloat()); 
    numsx.add((double)j); 
} 
double[] arrayX = new double[numsx.size()];  
double[] arrayY = new double[numsy.size()]; 
//assigns array x and y the values in the list. 
for (int k1 = 0; k1 < numsy.size(); i++) { 
    double f = numsy.get(k1); 
    arrayY[k1] = f; 
    f = numsx.get(k1); 
    arrayX[k1] = f; 
} 
FFT doFFT = new FFT(4); 
doFFT.fft(arrayX, arrayY); 
//adding the FFT numbers back to the Lists 
for (int j = 0; j < 100; j++) { 
    numsy.add(arrayY[j]); 
    numsx.add(arrayX[j]); 
} 
+0

能否請你分享你的'generator'? –

+0

@Yogendra這可能是一個「隨機」對象。 – Mordechai

+0

什麼類型的異常或錯誤? – Mordechai

回答

4

您的實例在您ArrayLists加入值之前Arrays

double[] arrayX = new double[numsx.size()];  
double[] arrayY = new double[numsy.size()]; 

這將創建陣列,length:。然後你會在你的循環下面有一個空指針。

UPDATE

然後,你必須編輯您的循環:

for (int k1 = 0; k1 < numsy.size(); i++) { 

這個

for (int k1 = 0; k1 < numsy.size(); k1++) { 
+0

請看編輯,即使然後程序崩潰 – Jonathan

+0

更新我的答案。再試一次。 –

+0

我真是個傻瓜!非常感謝。我甚至添加了將操縱數字添加回列表的其餘代碼。這個邏輯看起來是對的嗎?它工作得很好,但有沒有辦法讓它變得更好? – Jonathan

0
ArrayList<Double> numsy = new ArrayList<Double>(); 
ArrayList<Double> numsx = new ArrayList<Double>(); 

for (int j = 0; j < 100; j++) { 
    numsy.add((double)generator.nextFloat()); 
    numsx.add((double)j); 
} 

//添加值numX後聲明arrayX和arrayY和numY

double[] arrayX = new double[numsx.size()];  
double[] arrayY = new double[numsy.size()];  
    //assigns array x and y the values in the list. 
for (int k1 = 0; k1 < numsy.size(); k1++) { 
    double f = numsy.get(k1); 
    arrayY[k1] = f; 
    f = numsx.get(k1); 
    arrayX[k1] = f; 
} 
+0

嗨拉姆,即使那時程序不工作,它仍然崩潰的程序。說應用程序沒有響應。 – Jonathan

-1

爲什麼不嘗試使用內置的方法:
double[] arrayX = numsx.toArray(new double[0]);
double[] arrayY = numsY.toArray(new double[0]);

+0

我不知道java中存在這樣的方法。到目前爲止,我一直在使用python進行大部分的生活。所以我對java的使用經驗很少。讓我看看更多關於它 – Jonathan

+0

它給我以下錯誤, 方法toArray(T [])類型ArrayList 不適用於參數(double []) – Jonathan

+0

哦,我的錯誤,使用'toArray(new Double [0]);' – Mordechai

相關問題