[D不能转换为java.lang.Double

时间:2015-03-13 14:26:16

标签: java arraylist classcastexception

我在下面写了代码。它得到了这样的信息:

  

线程中的异常" main" java.lang.ClassCastException:[D不能转换为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上的一些帖子,但它们并没有让我感觉到多少。我该怎么办?

2 个答案:

答案 0 :(得分:6)

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

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

List无法存储基元,因此您必须存储Double值不是double。如果您有现有的double[]变量,则可以使用ArrayUtils.toObject()进行转换。

答案 1 :(得分:4)

实际上,你的问题是你试图将“xyz&#39;”的类型转换为双倍的<.xyz&#39;,它似乎不是双重的或Wrapper关联的(Double)。 / p>

由于java无法转换&#39; xyz&#39;投掷双ClassCastException投掷。您应该尝试将n double添加到您的数组中(或者甚至在循环中):

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

然后使用for循环来填充你的double [] val:

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