JAVA - For循环不创建新数组

标签 java arrays for-loop clone

有人可以帮我编写以下代码吗?当 for 循环再次执行时,我的 Point2D 临时数组永远不会覆盖前一个数组。

我使用 for 循环来打印数据,以测试临时数组是否发生变化...而且它肯定不会...为什么会发生这样的事情?

Point2D 在不同的类中定义。它的 x、y 和 z 值是公开的。

我认为这可能是 .clone() 函数?

谢谢!

<小时/>
Point2D[] pointArr;
pointArr = populateArr(N);  

    for (int i = 0; i < N; i++)
    {
        Point2D[] temp = pointArr.clone();

        if (i >= 0) 
        { 
            Point2D exch = temp[i]; 
            temp[i] = temp[0]; 
            temp[0] = exch;
        //temp[0].z = 0.0;
        }

        System.out.println();

        temp = determine_slopes(temp, N);

        Arrays.sort(temp, temp[0].X_ORDER);

    }

编辑1:只是为了澄清...我实际上希望 Point2D[] 温度随着每次迭代而改变...但由于某种原因它不会改变。可能是什么问题?

编辑2:我的pointArr输出如下:

10000 0 0.0 0 10000 0.0 3000 7000 0.0 7000 3000 0.0 20000 21000 0.0 3000 4000 0.0 14000 15000 0.0 6000 7000 0.0

当我打印时,我在第一次迭代后打印温度,我的输出看起来不像 pointArr 的......这是完全不同的。

最佳答案

数组声明应移至循环之外。否则,您将在循环的每次迭代中创建一个新的数组实例,覆盖前一个:

Point2D[] pointArr;
pointArr = populateArr(N);
Point2D[] temp = pointArr.clone();  //move to here

    for (int i = 0; i < N; i++)
    {


        if (i >= 0) 
        { 
            Point2D exch = temp[i]; 
            temp[i] = temp[0]; 
            temp[0] = exch;
        //temp[0].z = 0.0;
        }

        System.out.println();

        temp = determine_slopes(temp, N);

        Arrays.sort(temp, temp[0].X_ORDER);

    }

编辑: 我不确定这是否有帮助,但尝试使用循环而不是克隆创建 pointArr 的副本:

Point2D[] pointArr;
pointArr = populateArr(N);
Point2D[] temp;

for(int i=0; i<pointArr.length; i++)
    pointArr[i]=temp[i];

如果您,正如您所说,出于某种原因希望覆盖 temp,请将循环等(复制数组)移到循环内

关于JAVA - For循环不创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9722604/

相关文章:

java - 从 hazelcast 队列中删除项目时出现 NullPointerException

java - 使用 profiler4j 进行分析

arrays - 比较一个数组中的字符串与另一个数组中的通配符字符串

无法按预期打印 BMI 表

Python - 嵌套 for 循环中两个不同矩阵的错误结果

java - NodeEntity 无法转换为 graphdb.Node

java - 基于mask的字符串解析

字符数组操作

php - 我怎样才能用数据库中的数据制作这个数组?

java - for 循环 - 循环次数超出预期?