2015-10-17 69 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]