2015-08-09 66 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接受的第一个参数不是原始包装阵列。