0

我在 main 中调用了我的 swap 方法,但它并没有改变任何东西。我究竟做错了什么?

public static void main(String[] args){


    int mainArr[] = new int[20];

    for(int i = 0; i<mainArr.length; i++){
    swapper(3, 14, mainArr);
    System.out.print(i + mainArr[i] + " ");
    }
}


public static void swapper (int a, int b, int[] mainArr){
    int t = mainArr[a];
    mainArr[a] = mainArr[b];
    mainArr[b] = t;
}

我的代码产生

0, 1,  2, 3,...19 

以正常的升序排列,我希望它交换第 4 个和第 15 个元素。

4

4 回答 4

5

移动方法调用:-

swapper(3, 14, mainArr);

在你的 for 循环之外。因为,如果您的循环运行even多次,它不会影响数组。

此外,在实际交换元素之前,您需要先初始化数组。在调用swapper.

for(int i = 0; i<mainArr.length; i++){
    mainArr[i] = i;
}

swapper(3, 14, mainArr);

for(int i = 0; i<mainArr.length; i++){
    System.out.print(i + mainArr[i] + " ");
}
于 2012-10-24T19:56:07.220 回答
1

编写代码如下:

int mainArr[] = new int[20];  

for(int i =0; i <mainArr.length;i++)  
{  
    mainArr[i]=i;
}  

swapper(3,14,mainArr); 

将解决问题。问题是你碰巧调用了偶数次交换,所以它完全没有任何效果。

于 2012-10-24T19:56:32.383 回答
0

您调用 swapper 的次数与数组中的元素相同。

  • 如果数组的长度是偶数,则什么都不会改变
  • 如果数组的长度是奇数,它将改变
于 2012-10-24T19:56:34.177 回答
0
public class swapInt
{ 
public static void main(String args[])
{


swap(new int[]{2,3,5,6,8},1,3);


}
public static void swap(int[]a,int i,int j)
{
    int temp=a[i];
    a[i]= a[j];
    a[j]=temp;
    for(int b=0;b<a.length;b++)
    {

    System.out.println(a[b]);
    }
 }
}
于 2016-05-31T10:54:16.917 回答