我打电话给我的交换方法为主,但它不会改变任何东西。 我究竟做错了什么?
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号元素。
移动方法调用: -
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] + " ");
}
编写代码,那么:
int mainArr[] = new int[20];
for(int i =0; i <mainArr.length;i++)
{
mainArr[i]=i;
}
swapper(3,14,mainArr);
将解决此问题。 问题是你碰巧调用交换偶数倍,因此它有什么话,总的效果。
因为有您的数组中的元素你是交换技术的相同的次数调用。
- 如果阵列有一个甚至长度,不会有任何变化
- 如果阵列具有奇数长度,它会改变
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?