[英]Array Sorting Descending Order
我是java的新程序員,一直在使用這個網站來學習方法。 今天我偶然發現了另一個問題,即我正在為練習做的一個項目。
我有一個數組:
final int EXAMS = 5;
int[] scores = new int [EXAMS];
然后,用戶通過Scanner對象詢問此數組的值:
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();
}
}
我設法對值“scores []”進行升序排序:
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());
我收到一條錯誤消息:“找不到合適的排序方法。” 請幫忙。
Arrays
類中沒有接受int[]
和Comparator
的sort
方法。 接受Comparator
的Arrays
類中的sort
方法需要一個引用類型的數組(而int[]
是一個基本類型的數組)。
如果你改變你的類型, scores
從數組int[]
以Integer[]
您的代碼將工作,因為該方法public static <T> void sort(T[] a, Comparator<? super T> c)
中的Arrays
class將匹配您的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);
}
以下工作(使用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]
Collections.reverseOrder()
無法工作,因為數組是原始類型。 你可以從int更改為Integer或嘗試不同的東西,如:
Arrays.sort(scores);
ArrayUtils.reverse(scores);
您最后的選擇是制作自己的代碼。
您只需要將數組類型從Primitive type
更改為Primitive wrapper class
即int[] scores = new int [EXAMS]
到Integer[] scores = new Integer[EXAMS]
Arrays.sort
接受第一個參數中的包裝器數組而不是基元。
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);
}
java中的數組沒有排序方法.But ArrayList有一個排序方法。你可以使用下面的代碼以相反的順序對列表進行排序。
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.