我是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());
我收到错误消息:“找不到合适的排序方法。”请帮忙。
答案 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}}