Как я могу упростить этот код для сортировки пользовательского ввода в порядке убывания

#java #sorting #computer-science

#ява #сортировка #информатика #java

Вопрос:

Итак, я занимаюсь информатикой, и это было одно из наших заданий, и оно сработало, но я хотел бы знать, как это можно упростить, поскольку это кажется запутанным.

 
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 amp;amp; num2 > num3) {
            System.out.println(num1   " "   num2   " "   num3);
        } else if (num2 > num1 amp;amp; num1 > num3) {
            System.out.println(num2   " "   num1   " "   num3);
        } else if (num1 > num3 amp;amp; num3 > num2) {
            System.out.println(num1   " "   num3   " "   num2);
        } else if (num2 > num3 amp;amp; num3 > num1) {
            System.out.println(num2   " "   num3   " "   num1);
        } else if (num3 > num2 amp;amp; num2 > num1) {
            System.out.println(num3   " "   num2   " "   num1);
        } else if (num3 > num1 amp;amp; num1 > num2) {
            System.out.println(num3   " "   num1   " "   num2);
        }
    }

}
  

Комментарии:

1. Как насчет использования алгоритма сортировки?

2. Вы можете поместить все значения в массив / вектор из 3 элементов и отсортировать его (используя встроенную функцию сортировки Java)

Ответ №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.

  • Создайте объект сканера
  • Запрос на три целых числа.
  • возьмите три числа из консоли.
  • преобразуйте их в целочисленные объекты, чтобы их можно было сортировать в порядке убывания.
  • преобразовать в массив.
  • И распечатать их.
 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)));
  

Комментарии:

1. Если бы вы использовали .collect(Collectors.toList()) вместо .toArray(Integer[]::new) , не было бы необходимости также использовать Arrays.toString(......) , что привело бы к более простому и понятному коду.