[英]Converting ArrayList<Double> to Double Array and vice-versa for JAVA/Android
I've been trying to convert a Double ArrayList to a Double Array and vice-versa. 我一直在尝试将Double ArrayList转换为Double Array,反之亦然。
This is the code I have for converting Double ArrayList to Double Array, but the program keeps on crashing. 这是我将Double ArrayList转换为Double Array的代码,但程序仍在崩溃。 Am I missing something? 我错过了什么吗? or is the logic wrong all together? 或逻辑错误在一起?
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]);
}
You are instantiating your Arrays
before adding values in your ArrayLists
: 在ArrayLists
添加值之前,您要实例化您的Arrays
:
double[] arrayX = new double[numsx.size()];
double[] arrayY = new double[numsy.size()];
This will create arrays with length
: 0 . 这将创建length
0的数组。 Then you'll have a null pointer in your loop below. 然后你将在下面的循环中有一个空指针。
UPDATE UPDATE
Then you have to edit your loop: 然后你必须编辑你的循环:
for (int k1 = 0; k1 < numsy.size(); i++) {
to this 对此
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);
}
//Declare arrayX and arrayY after adding values to numX and numY //将值添加到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]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.