gpt4 book ai didi

java数组反转不理解逻辑

转载 作者:行者123 更新时间:2023-12-01 20:16:02 24 4
gpt4 key购买 nike

我试图使用我编写的代码来反转数组。我不明白为什么我在控制台中得到 [I@7a84639c 作为输出。

出于某种原因,为什么这个方法实际上没有将我的反转数组保存到数组中?如果我在 x[i]=c[i]; 的底部添加一个打印,它会显示反转的数组,但是当我添加一个调用时,例如 karn[0]它表明我的数组实际上没有反转。我想通过忠实于我编写的代码来解决这个问题。

import java.util.Arrays;

public class HelloWorld {
public static void main(String[] args) {


int[]karn={1,2,3};

rev(karn);
System.out.println(karn.toString());
}


public static void rev(int[]x){
int[]c=new int[x.length];

for(int i=x.length-1;i>-1;i--){
c[i]=x[i];
x[i]=c[i];
}
}
}

最佳答案

在您的 rev 方法中,您正在使用 c 的局部变量。所以这个值不会被转移到你的 main 方法中。您必须返回数组并将值分配给旧数组:

public static int[] rev(int[]x){
//Creates new array this array is different from karn and local to the method.
//nothing outside of this method can see this array.
int[]c=new int[x.length];

for(int i = 0; i < c.length; i++){
//Here is where we are swapping the values by placing the first
//value at the last spot of the array and so on
c[c.length - i - 1] = x[i];
}
//we must return the new array we made and assign it to karn so our
//changes will be saved and seen outside of the method
return c;
}

在 main 方法中,您必须将 rev 方法的更改分配给 karn。您可以分配值并像这样显示它:

karn = rev(karn);

//for each loop
for(int i : karn)
System.out.println(i);

//traditional for loop
for(int i = 0; i < karn.length; i++)
System.out.println(karn[i]);

数组没有默认的 toString() 方法。这就是为什么您可以如您所愿地看到数组的值。您需要遍历数组才能将它们显示到控制台。

关于java数组反转不理解逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45788776/

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