如何在数组中交换两个整数,其中我的方法采用两个整数和一个来自main的数组?

时间:2012-10-24 19:52:45

标签: java arrays methods integer main

我在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 个答案:

答案 0 :(得分: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] + " ");
}

答案 1 :(得分:1)

编写代码:

int mainArr[] = new int[20];  

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

swapper(3,14,mainArr); 

将解决此问题。问题是你碰巧偶数次调用swap,所以它总是没有效果。

答案 2 :(得分:0)

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

  • 如果数组的长度均匀,则不会发生任何变化
  • 如果数组的长度为奇数,则会更改

答案 3 :(得分: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]);
    }
 }
}