Java 在数组的ArrayList中搜索和添加元素 public double[]随机解决方案(int[]路径){ double[]doubleSol=新的双[顶点]; 随机r=新随机(); 对于(int i=0;i

Java 在数组的ArrayList中搜索和添加元素 public double[]随机解决方案(int[]路径){ double[]doubleSol=新的双[顶点]; 随机r=新随机(); 对于(int i=0;i,java,arraylist,Java,Arraylist,我有这4个函数,第一个函数返回一个填充了随机双精度的数组。然后我创建一个ArrayList并运行函数10000次,然后将数组添加到ArrayList中。然后我循环遍历ArrayList,将数组的每个索引中的double乘以100,对数字进行四舍五入并将其转换为整数,然后复制数组列表的过程,但使用整数代替。然后我试着打印所有的数字,它只一遍又一遍地打印相同的数字,这恰好是双数组列表中的最后一个数组。这是怎么回事?我想不出来 实际上您正在一次又一次地替换数组randV的值。 更改代码如下 publi

我有这4个函数,第一个函数返回一个填充了随机双精度的数组。然后我创建一个ArrayList并运行函数10000次,然后将数组添加到ArrayList中。然后我循环遍历ArrayList,将数组的每个索引中的double乘以100,对数字进行四舍五入并将其转换为整数,然后复制数组列表的过程,但使用整数代替。然后我试着打印所有的数字,它只一遍又一遍地打印相同的数字,这恰好是双数组列表中的最后一个数组。这是怎么回事?我想不出来

实际上您正在一次又一次地替换数组
randV
的值。 更改代码如下

public ArrayList<int[]> doubleToIntArrayList(ArrayList<double[]> list) {
ArrayList<int[]> RandVerArray = new ArrayList<>();
int[] randV = null;
for (int i = 0; i < list.size(); i++) {
    randV = new Integer[vertices];
    for (int j = 0; j < list.get(i).length; j++) {
        double vertex = ((list.get(i)[j] * 100));
        System.out.print(vertex + " ");
        randV[j] = (int) Math.round(vertex);
        System.out.print(randV[j] + " ");
    }
    RandVerArray.add(randV);
    System.out.print(" \n");
}
return RandVerArray;}
public ArrayList doubleToIntArrayList(ArrayList列表){
ArrayList RandVerArray=新的ArrayList();
int[]randV=null;
对于(int i=0;i