如何让用户按降序输入?

我希望用户按降序输入。升序输出是正确的,但降序输出不起作用。


 public static void main(String[] argu){


    int[] i = new int[10];

    Scanner sc = new Scanner(System.in);

    for (int j = 0; j<=9  ; j++) {


        i[j] = Integer.parseInt(sc.nextLine());


    }

    Arrays.sort(i);

    System.out.println(Arrays.toString(i));         

    Comparator comparator = Collections.reverseOrder();


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

    System.out.println(Arrays.toString(i));


慕沐林林
浏览 129回答 4
4回答

郎朗坤

您的行Arrays.sort(i,Collections.reverseOrder());不会编译,因为数组不是集合。使用 aList而不是数组并像这样使用它:public static void main(String[] argu) {&nbsp; &nbsp; List<Integer> i = new ArrayList<>();&nbsp; &nbsp; Scanner sc = new Scanner(System.in);&nbsp; &nbsp; for (int j = 0; j <= 9; j++) {&nbsp; &nbsp; &nbsp; &nbsp; i.add(Integer.valueOf(sc.nextLine()));&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println("Sorted:");&nbsp; &nbsp; Collections.sort(i);&nbsp; &nbsp; i.forEach(System.out::println);&nbsp; &nbsp; System.out.println("\nReversed:");&nbsp; &nbsp; Collections.sort(i, Collections.reverseOrder());&nbsp; &nbsp; i.forEach(System.out::println);}

万千封印

Arrays.sort(i, Collections.reverseOrder())不适用于原语。如果您需要使用上述方法进行排序,请尝试将值读取为Integernot&nbsp;int。如果您需要使用原语,请使用一个简单的比较器并将其传递给Arrays.sort()或使用如下所示的内容:Collections.sort(i, (int a, int b) -> return (b-a));

一只名叫tom的猫

你可以尝试使用Integer[]而不是int[]

冉冉说

或者使用流:i&nbsp;=&nbsp;Arrays.stream(i).boxed() &nbsp;&nbsp;&nbsp;&nbsp;.sorted(Comparator.reverseOrder()) &nbsp;&nbsp;&nbsp;&nbsp;.mapToInt(Integer::intValue) &nbsp;&nbsp;&nbsp;&nbsp;.toArray()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java