简体   繁体   English

转换ArrayList <Double> 对于JAVA / Android,双数组,反之亦然

[英]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.

相关问题 Java - 将小时(双精度)转换为分钟(整数),反之亦然 - Java - Converting hours(in double) to minutes(integer) and vice versa POI - 在 Excel 和 Java 日期之间转换的问题,反之亦然 - POI - Problems converting between Excel & Java date & vice-versa Java-将byte []转换为double [],反之亦然 - Java - Convert byte[] to double[] and vice versa 将流转换为字符串块,反之亦然 - converting streams to blocks of strings and vice-versa 为什么int / byte / short / long可以在没有类型转换的情况下转换为float / double,反之亦然 - Why can int/byte/short/long be converted to float/double without typecasting but vice-versa not possible 如何在Java中将双精度数组转换为Base64字符串,反之亦然 - How to convert double array to Base64 string and vice versa in Java 在Java中输入一个Int while变量声明为Double,反之亦然 - Entering a Int while variable declared Double and vice versa in Java 在Java中将double转换为String,反之亦然,而不会失去准确性 - Convert a double to a String in Java and vice versa without losing accuracy 何时在 LinkedList 或 ArrayList 上使用 HashMap,反之亦然 - When to use HashMap over LinkedList or ArrayList and vice-versa Java-使用java7将文件转换为Byte数组,反之亦然 - Java- Conversion of a file into a Byte array and vice-versa using java7
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM