问题在于:写一个名为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
答案 0 :(得分:1)
您需要打印的是Arrays.toString(a)
现在,您只是打印Array对象的Hashcode
答案 1 :(得分:0)
首先,您的交换方法可以简化。将两个数字相加,然后从总和中减去每个数字(以获得另一个数字)。像,
public static void swapPairs(int[] a) {
for (int i = 0; i < a.length - 1; i += 2) {
int c = a[i] + a[i + 1];
a[i] = c - a[i];
a[i + 1] = c - a[i + 1];
}
}
然后您可以使用Arrays.toString(int[])
获取String
。像,
public static void printArray(int[] a) {
System.out.println(Arrays.toString(a));
}
我测试了上面的内容,如
public static void main(String[] args) {
int[] t = { 1, 2, 3, 4 };
printArray(t);
swapPairs(t);
printArray(t);
}
我得到了
[1, 2, 3, 4]
[2, 1, 4, 3]
答案 2 :(得分:0)
几次破坏我的电脑后,这里是实际的工作代码:
private boolean isAdded;
答案 3 :(得分:0)
public static void swapPairs(int[] arr){
int length = arr.length%2 == 0? arr.length : arr.length-1;
for(int i=0; i<length; i=i+2) {
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
// print the array
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
答案 4 :(得分:0)
final int[] number = new int[] { 1, 2, 3, 4, 5, 6, 7 };
int temp;
for (int i = 0; i < number.length; i = i + 2) {
if (i > number.length - 2) {
break;
}
temp = number[i];
number[i] = number[i + 1];
number[i + 1] = temp;
}
for (int j = 0; j < number.length; j++) {
System.out.print(number[j]);
}
答案 5 :(得分:0)
导入 java.util.Scanner; 公共类 SwapEveryPair {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int n = scn.nextInt();
int[] arr = new int[n];
for (int i = 0; i < arr.length; i++) {
arr[i] = scn.nextInt();
}
for (int i = 0; i < (arr.length - 1); i += 2) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
for(int i=0; i< arr.length; i++){
System.out.println(" " + arr[i]);
}
}
}``
答案 6 :(得分:-1)
我认为这应该可行,
public static void swapAlternate(int[] input){
for(int i=0;i<input.length - 1; i+=2){
int temp = input[i];
input[i] = input[i+1];
input[i+1] = temp;
}
}