#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(......)
, что привело бы к более простому и понятному коду.