[D 无法转换为 java.lang.Double

[D cannot be cast to java.lang.Double

我写了下面的代码。它收到此消息:

Exception in thread "main" java.lang.ClassCastException: [D cannot be cast to java.lang.Double

double[] xyz = {1, 11, 111, 2, 22, 222};
ArrayList array = new ArrayList();

array.add(xyz);

double[] vals = new double[array.size()];

vals[0] = (double) array.get(0);
vals[1] = (double) array.get(1);
vals[2] = (double) array.get(2);

我也在 Stack Overflow 上搜索并看到了一些 post,但它们对我来说意义不大。我该怎么办?

如果要将 double 个值的数组添加到 ArrayList,请执行以下操作:

Double[] xyz = {...};
ArrayList<Double> array = new ArrayList<>(); // note, use a generic list
array.addAll(Arrays.asList(xyz));

A List 无法存储基元,因此您必须存储 Double 值而不是 double。如果你有一个现有的 double[] 变量,你可以使用 ArrayUtils.toObject() 来转换它。

实际上,您的问题是您试图将 'xyz' 的类型转换为双精度类型或 Wrapper 关联 (Double) 类型。

由于 java 无法将 'xyz' 的类型转换为双精度类型,因此 ClassCastException 被抛出。您应该尝试将 n double 添加到您的数组中(甚至在循环中):

ArrayList<Double> myListOfDouble = new ArrayList();
myListOfDouble.add(1.0);

然后使用 for 循环填充你的双 [] 值,如下所示:

for(int i = 0; i < myListOfDouble.size(); i++)
    vals[i] = myListOfDouble.get(i);