为了账号安全,请及时绑定邮箱和手机立即绑定

如何让用户按降序输入?

如何让用户按降序输入?

慕沐林林 2023-03-31 16:49:04
我希望用户按降序输入。升序输出是正确的,但降序输出不起作用。 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));
查看完整描述

4 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

您的行Arrays.sort(i,Collections.reverseOrder());不会编译,因为数组不是集合。使用 aList而不是数组并像这样使用它:


public static void main(String[] argu) {

    List<Integer> i = new ArrayList<>();

    Scanner sc = new Scanner(System.in);

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

        i.add(Integer.valueOf(sc.nextLine()));

    }


    System.out.println("Sorted:");

    Collections.sort(i);

    i.forEach(System.out::println);


    System.out.println("\nReversed:");

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

    i.forEach(System.out::println);

}


查看完整回答
反对 回复 2023-03-31
?
万千封印

TA贡献1891条经验 获得超3个赞

Arrays.sort(i, Collections.reverseOrder())不适用于原语。如果您需要使用上述方法进行排序,请尝试将值读取为Integernot int

如果您需要使用原语,请使用一个简单的比较器并将其传递给Arrays.sort()或使用如下所示的内容:
Collections.sort(i, (int a, int b) -> return (b-a));


查看完整回答
反对 回复 2023-03-31
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

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



查看完整回答
反对 回复 2023-03-31
?
冉冉说

TA贡献1877条经验 获得超1个赞

或者使用流:

i = Arrays.stream(i).boxed()
    .sorted(Comparator.reverseOrder())
    .mapToInt(Integer::intValue)
    .toArray()


查看完整回答
反对 回复 2023-03-31
  • 4 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信