Java中数组的简单交换会产生奇怪的结果

这是一段简单的代码。但是结果仍然是错误的,我只是不明白为什么-有人吗?

使用数组int[] a = {3,1,2,5}并用System.out.println(Arrays.toString(s.swap(a,a[0],a[1])));调用它,结果得到 [3,2,0,1,5] 。这是怎么回事我希望 [1、3、0、2、5] 。 -谢谢!

import java.util.Arrays;


    public class MyClass {


    public int[] swap(int[] array,int a,int b){
            int temp = array[a];
            array[a] = array[b];
            array[b] = temp;
            return array;
        }
}
wc031546 回答:Java中数组的简单交换会产生奇怪的结果

此行正在调用索引为A [0] = 3和A [1] = 1的交换,因此将A [3]与A [1]交换。

System.out.println(Arrays.toString(s.swap(a,a[0],a[1]))); 
,

第二个和第三个参数应该是要交换的数组的索引。

int[] a = {3,1,2,5}
to swap first and second index you should call swap(a,1)
swap(a,1)
Then a becomes{1,3,5}
,

temp变为array [a [0]],array [3]-> 2

array [a [0]] array [3]变成array [a [1]]变成array [1]:-> 1

array [1]变为2

3 2 0 1 5

,

该函数需要索引,但是您正在传递值! 只需考虑使用System.out.println(Arrays.toString(s.swap(a,1)));而不是System.out.println(Arrays.toString(s.swap(a,a[1])));

本文链接:https://www.f2er.com/2984092.html

大家都在问