Search code examples
javasortingcomputer-science

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


So I am doing computer science and this was one of our assignments and it worked for it but I would like to know how this could be simplified as it seems messy.


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

}

Solution

  • Simplified version, using an array and sorting it using 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]);