我在下面写了代码。它得到了这样的信息:
线程中的异常" 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上的一些帖子,但它们并没有让我感觉到多少。我该怎么办?
答案 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);