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

问题描述 投票:0回答:4

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

使用数组int [] a = {3,1,0,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;
    }

}

java arrays swap
4个回答
1
投票

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

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

1
投票

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

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

0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.