数组排序降序

时间:2015-08-09 06:28:30

标签: java arrays sorting

我是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();
        }
    }

我设法对值“score []”进行升序排序:

       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());

我收到错误消息:“找不到合适的排序方法。”请帮忙。

6 个答案:

答案 0 :(得分:1)

sort课程中没有Arrays方法接受int[]Comparator。接受sort的{​​{1}}类中的Arrays方法需要引用类型数组(而Comparator是基本类型的数组)。

如果您将int[]数组的类型从scores更改为int[],则代码将起作用,因为Integer[]类的方法public static <T> void sort(T[] a, Comparator<? super T> c)将与Arrays来电相匹配。

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

答案 1 :(得分:1)

以下工作(使用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]

答案 2 :(得分:1)

Collections.reverseOrder() 

无法工作,因为数组是原始类型。您可以从int更改为Integer或尝试不同的内容,例如:

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

您的最终选择是制作自己的代码。

答案 3 :(得分:1)

您只需将数组类型从print更改为Primitive type,即Primitive wrapper class更改为int[] scores = new int [EXAMS]

Integer[] scores = new Integer[EXAMS]接受第一个参数中的包装数组而不是原语。

答案 4 :(得分:0)

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

不适用于基元。试试这个,

$(document).on("keyup", function(e) {
    if (e.keyCode == 27) { // escape key maps to keycode `27`
       e.preventDefault();
    }
});

答案 5 :(得分:0)

java中的数组没有排序方法.But ArrayList有一个排序方法。你可以使用下面的代码以相反的顺序对列表进行排序。

{{1}}