如何交换两个整数数组中的,在我的方法需要在两个整数,并从主数组?(How do I swap two

2019-08-01 20:49发布

我打电话给我的交换方法为主,但它不会改变任何东西。 我究竟做错了什么?

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号元素。

Answer 1:

移动方法调用: -

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] + " ");
}


Answer 2:

编写代码,那么:

int mainArr[] = new int[20];  

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

swapper(3,14,mainArr); 

将解决此问题。 问题是你碰巧调用交换偶数倍,因此它有什么话,总的效果。



Answer 3:

因为有您的数组中的元素你是交换技术的相同的次数调用。

  • 如果阵列有一个甚至长度,不会有任何变化
  • 如果阵列具有奇数长度,它会改变


Answer 4:

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]);
    }
 }
}


文章来源: How do I swap two integers in an array, where my method takes in two integers and an array from main?