【发布时间】:2023-04-03 08:32:01
【问题描述】:
问题是:编写一个名为 swapPairs 的方法,它接受一个整数数组并交换相邻索引处的元素。也就是说,交换元素 0 和 1,交换元素 2 和 3,依此类推。如果数组的长度为奇数,则最后一个元素应保持不变。例如,在调用您的方法后,列表 {10,20,30,40,50} 应变为 {20,10,40,30,50}。
编写方法 printArray,它传递一个数组并将打印出每个元素。
使用该方法打印swapPairs修改的数组。
这是我的代码:
public static void swapPairs(int[] a){
int len=a.length;
if(len%2 ==0){
for(int i=0; i<len; i=i+2){
a[i]=a[i+1];
a[i+1]=a[i];
int[] b={a[i]+a[i+1]};
}
}
if(len%2 !=0){
for(int j=0; j<len; j=j+2){
a[j]=a[j+1];
a[j+1]=a[j];
a[len-1]=a[len-1];
int[] b={a[j]+a[j+1]+a[len-1]};
}
}
}
public static void printArray(int[] a){
System.out.println(a);
}
然而,它返回的是 [I@2a139a55
【问题讨论】:
-
你没有交换任何东西,因为在你的第一个循环中你覆盖了 a[I] 然后使用 a[I] 分配给你复制到 a[I] 的元素,你需要一个临时变量来存储赋值前a[I]的内容再用临时变量赋值给a[I+1]。
-
一开始你写
if(len%2 ==0)。稍后你写if (len%2 !=0)。为什么不只写else那里?