将 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]);
}

ArrayLists中添加值之前,您正在实例化Arrays

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

这将创建length0的数组。然后,您将在下面的循环中有一个空指针。

更新

然后你必须编辑你的循环:

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

对此

for (int k1 = 0; k1 < numsy.size(); k1++) {
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 和 numY 后声明 arrayX 和 arrayY

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;
}

为什么不尝试使用内置方法:
double[] arrayX = numsx.toArray(new double[0]);
double[] arrayY = numsY.toArray(new double[0]);

最新更新