2015-08-09 65 views
2

我是一個新的java程序員,一直在使用這個網站了解很多方法。今天,我已經偶然發現了一個我正在爲實踐而開展的項目。Array Sorting降序排列

我有一個數組:

final int EXAMS = 5; 
    int[] scores = new int [EXAMS]; 

此數組中的值,然後從用戶要求通過一個掃描儀對象:

for (int index = 0; index < EXAMS; index++) 
    { 
     System.out.println("Enter the score for " + (index+1) +":"); 
     scores[index] = kb.nextInt(); 
     if (scores[index] < 0){ 
      System.out.println("The number you have entered is invalid."); 
      scores[index] = kb.nextInt(); 
     } 
    } 

我設法使這些值的升序排序「分數[]」:

 Arrays.sort(scores); 
     System.out.println("The sorted int array is:"); 
     for (int number : scores) 
     { 
      System.out.println("Number = "+ number); 
     } 

但我希望排序按降序排列。當我把

Arrays.sort(scores, Collections.reverseOrder());

我得到一個錯誤說:「找到了排序沒有合適的方法」請幫忙。

+0

在插入時對數組進行排序.. – gifpif

回答

1

Arrays類中沒有sort方法,該方法接受int[]Comparator。接受ComparatorArrays類中的sort方法需要一個引用類型的數組(而int[]是一個基元類型的數組)。

如果您改變scores陣列從int[]Integer[]的類型,你的代碼將工作,因爲Arrays類的方法public static <T> void sort(T[] a, Comparator<? super T> c)將匹配您的通話Arrays.sort(scores, Collections.reverseOrder());

final int EXAMS = 5; 
Integer[] scores = new Integer [EXAMS]; // the only required change 
for (int index = 0; index < EXAMS; index++) { 
    System.out.println("Enter the score for " + (index+1) +":"); 
    scores[index] = kb.nextInt(); 
    if (scores[index] < 0){ 
     System.out.println("The number you have entered is invalid."); 
     scores[index] = kb.nextInt(); 
    } 
} 
Arrays.sort(scores, Collections.reverseOrder()); 
System.out.println("The sorted int array is:"); 
for (int number : scores) { 
    System.out.println("Number = "+ number); 
} 
+0

@HugoDiaz不客氣 – Eran

0

下工作(使用Integer對象,而不是原始int):

Integer[] test = {1, 2, 4, 3, 5}; 
Arrays.sort(test, Collections.reverseOrder()); 
System.out.println(Arrays.toString(test)); // [5, 4, 3, 2, 1] 
0
Arrays.sort(a, Collections.reverseOrder()); 

不與原語工作。試試這個,

Integer[] a = new Integer[]{1,2,3,5,4}; 
      Arrays.sort(a,Collections.reverseOrder()); 
      for(int i:a) 
      { 
       System.out.println(i); 
      } 
0

有在java.But ArrayList的數組沒有排序方法有幾分method.You可以將下面的代碼以按相反的順序列表。

List l=new ArrayList(); 
l.add(5); 
l.add(1); 
l.add(2); 
l.add(3); 
Collections.sort(l,Collections.reverseOrder()); 
System.out.println(l); 
0
Collections.reverseOrder() 

不會工作,因爲該陣列是原始類型。您可以從int更改爲整數或類似嘗試不同的東西:

Arrays.sort(scores); 
ArrayUtils.reverse(scores); 

您的最終選擇是讓你自己的代碼。

1

你只需要您的數組類型改爲從Primitive typePrimitive wrapper classint[] scores = new int [EXAMS]Integer[] scores = new Integer[EXAMS]

Arrays.sort接受的第一個參數不是原始包裝陣列。