gpt4 book ai didi

java - 如何交换 Java 数组中的数据列

转载 作者:行者123 更新时间:2023-12-01 09:40:05 27 4
gpt4 key购买 nike

我不确定是我盯着屏幕太久了,还是我太蠢了,或者发生了一些奇怪的事情。

我有一个 n*m double 组,Home.data。我正在尝试将第 0 列中的数据与用户选择的列中的数据进行交换,因此两者可以有效地互换。这是代码:

public class ChangeOrdinate {
public void rearrange(int index){
double[][] tempdata1 = Home.data;
double[][] tempdata2 = Home.data;

for(int i = 0; i < Home.data.length; i++){
Home.data[i][index] = tempdata1[i][0];
}
for(int i = 0; i < Home.data.length;i++){
Home.data[i][0] = tempdata2[i][index];
}
}
}

但是,此代码只能将数据从第 0 列移动到“索引”列。 “index”列中的数据永远不会返回到第 0 列。

我在第一个循环中尝试了 System.out.println(tempdata2[I][index]); 表达式的任意一侧,并且看起来 tempdata2< 中的数据 正在被更改,尽管没有提及它。

我完全不知道wtf出了什么问题。我有什么明显遗漏的吗?我没那么菜鸟,所以要么是太晚了,我没有喝足够的咖啡,要么是太晚了,我喝了太多咖啡。

提前非常感谢,

G

最佳答案

it appears that the data in tempdata2 is being altered, despite there being no reference to it.

Home.data 引用的任何更改也会影响两个临时数组的引用。所以,这些不是副本,它们都指向内存中的同一个数组。

对于交换数字,问题是您分配a=b,然后尝试分配b=a(因为引用是相同的)。最终导致 b=b

的空操作

您也可以使用一个循环来交换

    for(int i = 0; i < Home.data.length; i++){
int tmp = Home.data[i][index];
Home.data[i][index] = Home.data[i][0];
Home.data[i][0] = tmp;
}

关于java - 如何交换 Java 数组中的数据列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536436/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com