如何简化此代码以按降序对用户输入进行排序

How can I simplify this code for sorting user input in descending order

所以我正在研究计算机科学,这是我们的作业之一,它很有效,但我想知道如何简化它,因为它看起来很乱。


import java.util.Scanner;

public class DecreasingOrder {

public static void main(String[] args) {
        //get 3 user ints and display them in decreasing order
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the first number");
        int num1 = input.nextInt();
        System.out.println("Enter the second number");
        int num2 = input.nextInt();
        System.out.println("Enter the third number");
        int num3 = input.nextInt();
        //sort numbers in order
        if (num1 > num2 && num2 > num3) {
            System.out.println(num1 + " " + num2 + " " + num3);
        } else if (num2 > num1 && num1 > num3) {
            System.out.println(num2 + " " + num1 + " " + num3);
        } else if (num1 > num3 && num3 > num2) {
            System.out.println(num1 + " " + num3 + " " + num2);
        } else if (num2 > num3 && num3 > num1) {
            System.out.println(num2 + " " + num3 + " " + num1);
        } else if (num3 > num2 && num2 > num1) {
            System.out.println(num3 + " " + num2 + " " + num1);
        } else if (num3 > num1 && num1 > num2) {
            System.out.println(num3 + " " + num1 + " " + num2);
        }
    }

}

简化版本,使用数组并使用 Arrays.sort():

对其进行排序
Scanner input = new Scanner(System.in);
int[] nums = new int[3];
System.out.println("Enter the first number");
nums[0] = input.nextInt();
System.out.println("Enter the second number");
nums[1] = input.nextInt();
System.out.println("Enter the third number");
nums[2] = input.nextInt();
Arrays.sort(nums);
System.out.println(nums[2] + " " + nums[1] + " " + nums[0]);

这是另一个简化版本。它使用 Java 8 个流。

  • 创建扫描仪对象
  • 提示输入三个整数。
  • 从控制台输入三个数字。
  • 将它们转换为 Integer 对象,以便它们可以按降序排序。
  • 转换为数组。
  • 并打印出来。
Scanner input = new Scanner(System.in);
System.out.println("Please enter three integers.");
System.out.println(Arrays
        .toString(IntStream.generate(input::nextInt).limit(3)
                .boxed().sorted(Comparator.reverseOrder())
                .toArray(Integer[]::new)));