双精度浮点数数组混淆问题

3

我有两个已初始化的数组:

    public static double[] arrayweight= new double[100];
    public static double[] arraypulse= new double[100];

它们充满了数据,例如23.0、25.8等。

我需要将这两个数组合并成一个 double[] 数组。

我选择使用以下方法,但它不起作用。有什么想法吗?

     ArrayList <Double> al = new ArrayList<Double>();

// The following methods do not work ;(     
     al.add((double[]) Global.arrayweight);
     al.add(new Double(Global.arraypulse));

强相关:https://dev59.com/Q3VD5IYBdhLWcg3wHn2d - Ray Toal
ArrayweightArraypulse应该命名为arrayWeightarrayPulse。请参考Java命名规范。 - Miserable Variable
类型(和基数)完全不匹配。您正在尝试将整个数组作为列表的元素添加,而该列表不是数组列表,然后尝试将数组转换为单个Double对象。 - aalku
6个回答

3
你可以使用 System.arraycopy 来实现它。
double[] cArray= new double[Arrayweight.length + Arraypulse.length];
System.arraycopy(Arrayweight, 0, cArray, 0, Arrayweight.length);
System.arraycopy(Arraypulse, 0, cArray, Arrayweight.length, Arraypulse.length);

2
如何选择更简单的方法:
double[] arr = new double[Arrayweight.length + Arraypulse.length];
int counter = 0;
for(double d1 : Arrayweight) arr[counter++] = d1;
for(double d2 : Arraypulse)  arr[counter++] = d2;

或者(如果它们具有相同的长度):
int length = Arrayweight.length + Arraypulse.length;
double[] arr = new double[length];
for(int i = 0; i < length / 2; i++)
{
    arr[i] = Arrayweight[i];
    arr[i + length / 2] = Arraypulse[i];
}

1
你可能会发现 TDoubleArrayList 很有用。它是 double[] 的包装器。
TDoubleArrayList al = new TDoubleArrayList();
al.add(Arrayweight);
al.add(Arraypulse);

然而,您的命名表明您正在使用数组,而对象可能是更好的方法。

class MyData {
    double weight, pulse;
}

List<MyData> al = new ArrayList<MyData>();
for(int i=0;i<100;i++) {
    MyData md = new MyData();
    md.weight = ...
    md.pulse = ...
    al.add(md);
}

0
double[] both = (double[]) ArrayUtils.addAll(Arrayweight, Arraypulse);

0

我最喜欢Nammari的答案,但是以防你没有使用Commons Lang并且想坚持使用纯Java:

double[] result = Arrays.copyOf(Arrayweight, Arrayweight.length + Arraypulse.length);
System.arrayCopy(Arraypulse, 0, result, Arrayweight.length, Arraypulse.length);

-1

add方法接受单个值,而不是数组。如果您想使用ArrayList,可以结合List的addAll和Arrays的asList方法:

al.addAll(Arrays.asList(Global.Arrayweight));
al.addAll(Arrays.asList(Global.Arraypulse));

Arrays.asList() 对于原始数组无效,至少不会按照你的意图工作。 - Paul Bellora

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接