2014-11-04 96 views
0

我需要幫助編寫此代碼,所以我可以反轉整數數組並返回它?誰能幫忙?麻煩創建一個方法,需要作爲輸入一個整數數組並返回反向數組

public class Quesitons { 

    public static void main(String[] args) { 

     int[] numbers = {1, 2, 3, 4, 5, 6, 8}; 

     int[] a = reverseArray(numbers); 
     System.out.println(a); 

    } 

    public static int[] reverseArray(int[] numbers) { 

     int [] newArray= new int [numbers.length]; 
     int temp; 
     int left = numbers[0]; 
     int right = numbers.length; 
     int mid = left+right/2; 
     for (int i=0; i<mid;i++){ 
      temp = left; 
      left= right; 
      right= temp; 

      right= right -1; 
      left= left+1; 

      left= newArray[0]; 
      right=newArray.length-1; 
     } 
     return newArray; 
    } 
} 
+0

如果你解釋你正在使用的特定語言,它可能會幫助你獲得幫助。 – furkle 2014-11-04 03:24:09

+0

對不起,它在java – Dee 2014-11-04 03:25:26

+0

什麼是不工作關於你的代碼上面? – furkle 2014-11-04 03:26:54

回答

0

與編程中的大多數任務一樣,最簡單的方法是不做任何工作。雖然陣列沒有reverse方法,但在Collections中有一個反向方法。因此,如果您要使用List而不是陣列,則可以撥打yourList.reverse(),所有工作都將爲您完成。

如果你想要或需要使用數組,下面是會返回傳遞給它的int[]相反的方法:

public static int[] reverseArray(int[] input) 
{ 
    int[] reversedArray = new int[input.length]; 

    int j = 0; 
    for (int i = input.length - 1; i >= 0; i--) 
    { 
     reversedArray[j] = input[i]; 
     j++; 
    } 

    return reversedArray; 
} 

要總結一下這樣做:首先,它創建一個新的數組與輸入數組長度相同。然後,在從輸入數組的最後一個元素移動到第一個元素的for循環中,將這些元素中的每個元素分配給新數組中從第一個到最後一個的索引。所以輸入數組的最後一個索引被分配到新的數組的第一個指數,和第二指數第二到最後一個元素,等

+0

以及它的工作原理,但是當我運行它時,我得到了這個[I @ 15db9742 – Dee 2014-11-04 03:38:47

+0

@Dee你在ideone中運行這個,不是嗎?如果你打印數組的每個元素,你會發現結果就是你想要的結果。 Ideone似乎不支持打印陣列。 – furkle 2014-11-04 03:40:15

+0

即時運行在NetBeans上,我不知道爲什麼它這樣做?奇怪的 – Dee 2014-11-04 03:41:26

0

試試這個

public static int[] reverseArray(int[] numbers) { 

    int[] newArray= new int[numbers.length]; 
    int counter = 0 ; 
    for(int i = numbers.length - 1; i >= 0; i--) 
    { 
     newArray[counter] = numbers[i]; 
     counter++; 
    } 
    return newArray; 
} 

調用,比如這看看結果:

int[] numbers = {1, 2, 3, 4, 5, 6, 8}; 
int[] a = reverseArray(numbers); 
for(int i = 0; i < a.length; i++) 
    Console.write(a[i]); 

我還沒有測試過,但確定它應該工作。

+0

right我的意思是它的作品,但是當它運行時,我得到了這個[I @ 15db9742?你能解釋我爲什麼得到那個嗎?請 – Dee 2014-11-04 03:39:25

+0

你可以發佈你調用的參數值,以及你看到那個值的地方嗎? – 2014-11-13 15:49:49

0

略微不同for環扭轉數組:

for (int i = numbers.length -1, j = 0; i >= 0; i--, j++) 
{ 
    newArray[i] = numbers[j]; 
} 

for循環,則可以聲明多個,逗號分隔的變量。唯一的是,你可以只有一個逃生子句(即i >= 0j < array.length

基本上你正在做的是倒數倒數組,而在原來的計數。如果你仔細想一想,那會很簡單。

相關問題