2015-10-17 68 views
0

问题出在这里:编写一个名为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

几乎打破了我的电脑几次后,这里的实际工作代码:

public static void swapPairs(int[] a){ 
    int len=a.length; 
     if(len%2 ==0){ 
      for(int i=0; i<len; i=i+2){ 
       int c=a[i]+a[i+1]; 
       a[i]=c-a[i]; 
       a[i+1]=c-a[i+1]; 
      } 
     } 
     if(len%2 !=0){ 
      for(int j=0; j<len-1; j=j+2){ 
       int c=a[j]+a[j+1]; 
       a[j]=c-a[j]; 
       a[j+1]=c-a[j+1]; 
      } 
      a[len-1]=a[len-1]; 
     } 
} 
public static void printArray(int[] a){ 
    int len=a.length; 
    for(int i=0;i<len;i++) 
     System.out.print(a[i]+" "); 
} 
1

您需要打印什么是Arrays.toString(a)

现在,你只是打印的哈希码你的数组对象

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]