2014-10-02 43 views
-1

不能顛倒另一個數組中的數組值 請指導我如何顛倒另一個數組中的數組值 我也使用了帶有temp變量的swap方法,但它不是有效不能顛倒java中的數組排序

import java.util.Scanner; 

public class ArrayHW { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     Scanner in = new Scanner(System.in); 

     System.out.println("please enter the lenght of the array:"); 

     int len = in.nextInt(); 

     int k = 0 ; 

     int[] array = new int [len]; 
     int[] invarr = new int[len]; 

     for(int i = 0; i < len ; i++){ 

     System.out.println("please enter the values:"); 
     array[i] = in.nextInt(); 
     } 


     //using for loop 
     for(int i=0 ; i < len ; i++){ 
      System.out.println("the array in normal case is:" + (i+1) + "\t" + array[i]); 

     } 

     /*for (int nav : array) { 
      System.out.println(nav); 
     }*/ 

     for(int i = len ; i >= 0 ; i--) 
     { 
      invarr[k] = array[i]; 
      System.out.println(invarr[k]);    
      k++;     
     } 

    } 

} 
+0

數組的最後一個可用的指標是'長度 - 1'。所以你的最後一個循環應該是'for(int i = len-1; i> = 0; i - )' – BackSlash 2014-10-02 10:35:19

+0

想按某種順序對數組進行排序或者只是想顛倒數組元素的順序? – Tirath 2014-10-02 10:35:54

+0

非常感謝我的朋友。 – 2014-10-03 11:26:06

回答

2

可以扭轉陣列以這種方式

int[] arr=new int[]{1,4,5,2};// index of this array are 0,1,2,3 
int[] reverseArr=new int[arr.length]; 
int j=0; 
for(int i=arr.length-1;i>=0;i--){ // considering arr from reverse order 
    reverseArr[j]=arr[i]; 
    j++; 
} 

問題在你的代碼

for(int i = len ; i >= 0 ; i--) // there is no index in array for i = len 

您的循環應該糾正爲

for(int i = len-1 ; i >= 0 ; i--) 
3

您可能會遇到IndexOutofBoundException,因爲你的循環扭轉陣列i=len開始。數組遍歷從len-10。因此,改變你的循環中:

for(int i = len -1; i >= 0 ; i--) 
{ 
    invarr[k] = array[i]; 
    k++; 
} 
1

您應該len - 1開始,因爲索引基於零。改變你的最後一個循環是這樣的:

for(int i = len-1; i >= 0 ; i--) 
{ 
    invarr[k] = array[i]; 
    System.out.println(invarr[k]); 
    k++; 
} 
5

您可以使用反向方法從集合的Util類

List <Object> list = Arrays.asList(arr); 
Collections.reverse(list); 
Object[] res = list.toArray(); 
+0

你不需要最後一行。 'arr'被顛倒過來。 – aioobe 2014-10-02 10:43:55

+0

@aioobe你是什麼意思? – assylias 2014-10-02 10:47:18

+0

我的意思是說,不需要使用'list.toArray()'來獲得結果數組。 「arr」本身是顛倒過來的。 (但請注意,'arr'需要有'Integer []'類型才能工作。) – aioobe 2014-10-02 11:17:40

0

您可以使用

Arrays.sort(arr, Collections.reverseOrder()); 
+0

謝謝,但這會幫助他學習比較器:)我會將其添加到我的答案。 – 2014-10-02 10:47:10

+0

順便說一句,OP不想*排序*數組,OP要*反轉*數組。 – aioobe 2014-10-02 11:19:12