我想将数组添加到另一个数组数组中。你能救我吗?
public static double[][] append(double[][] array, double[] value) {
double[][] result = Arrays.copyOf(array, array.length + value.length);
for(int i=0;i<value.length;i++){
result[result.length - 1][i] = value[i];
}
return result;
}
答案 0 :(得分:0)
您只需向array
添加一个索引,并将其值设置为value
。目前,您正在尝试在双精度数组数组中添加double值。
public static double[][] append(double[][] array, double[] value) {
array = Arrays.copyOf(array, array.length + 1);
array[array.length - 1] = value;
}
答案 1 :(得分:0)
您只是添加了一个数组,因此请更改:
double[][] result = Arrays.copyOf(array, array.length + value.length);
到此:
double[][] result = Arrays.copyOf(array, array.length + 1);
每个数组都是一个对象,甚至是原始数组。如果您要在代码中添加System.out.println(result[0].getClass().getSuperClass());
,则会打印class java.lang.Object
。
这意味着'result'的每个元素都是一个对象。当您调用Arrays.copyOf并请求更大的数组时,所有额外元素都设置为null(在Arrays.copyOf documentation中指定)。
这意味着在将result[result.length - 1][i]
设置为非空值之前,您可能无法合法访问result[result.length - 1]
。具体来说,您希望将其设置为新的双数组。
在Java中,所有数组都有一个类型安全的公共clone()方法,所以你可以取消你的for循环,只需调用:
result[result.length - 1] = value.clone();