尝试从用户输入中对列表中的整数进行排序

时间:2015-10-01 12:01:38

标签: java sorting

我正在尝试编写一些代码,允许用户输入多个数字,然后将它们放入列表中,然后对它们进行升序排序,然后再下降。

这是我的Java代码:

public static void questionThree() throws java.lang.Exception {
    int input1;
    int input2;
    int input3;
    int noAmount;

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

    Scanner user_input = new Scanner( System.in );
    System.out.println("Enter the amount of numbers: ");

    noAmount = user_input.nextInt();
    for (int i = 0; i < noAmount; i++) {
        System.out.println("Enter a number: ");
        input2 = user_input.nextInt();
        numberList.add(input2);
    }

    Arrays.sort(numberList);

    for (int i = 0; i < numberList.size(); i++) {
        System.out.println(numberList.get(i));
    }
}

控制台抱怨我不能在这里使用排序。

如何对刚刚放入列表的整数进行排序?

2 个答案:

答案 0 :(得分:3)

您应该使用Collections.sort而不是Arrays.sort,因为您要对Collection而不是数组进行排序:

Collections.sort(numberList);

其他关于您的代码的评论:

  • 您应该尊重Java命名约定:user_input应重命名为userInput
  • 您要声明未使用的变量:input1input3
  • 您应该尽量减少每个变量的范围。由于input2仅在循环内部需要,因此您可以编写int input2 = userInput.nextInt();并在方法开头删除其声明。

答案 1 :(得分:3)

 Arrays.sort(numberList);

该sort函数将数组作为输入而不是集合。您使用的Arrays类用于对数组进行排序而不是Collections

你应该使用

Collections.sort(numbersList);

因为您想以相反的顺序对列表进行排序

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