[英]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.