【问题标题】:How can I simplify this code for sorting user input in descending order如何简化此代码以按降序对用户输入进行排序
【发布时间】:2021-01-02 12:01:39
【问题描述】:

所以我正在做计算机科学,这是我们的一项任务,它很有效,但我想知道如何简化它,因为它看起来很乱。


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);
        }
    }

}

【问题讨论】:

  • 使用排序算法怎么样?
  • 您可以将所有值放在一个包含 3 个元素的数组/向量中并对其进行排序(使用 Java 内置排序功能)

标签: java sorting computer-science


【解决方案1】:

简化版,使用数组并使用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]);

【讨论】:

    【解决方案2】:

    这是另一个简化版本。它使用 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)));
    

    【讨论】:

    • 如果您使用.collect(Collectors.toList()) 而不是.toArray(Integer[]::new),则无需同时使用Arrays.toString(......),从而使代码更简单、更直接。
    猜你喜欢
    • 2019-02-09
    • 2019-10-22
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多