我在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个元素。
答案 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]);
}
}
}