Само задание звучит так: Реализовать программу чтения из текстового файла целых положительных значений (числа разделены пробелами, следует читать до конца файла), занесение этих чисел в массив, сортировка по убыванию и по возрастанию суммы цифр и хранения обоих результатов в двух новых текстовых файлах. Перечисленные действия реализовать в отдельной статической функции. Для определения порядка сортировки создать классы, которые реализуют интерфейс Comparator.
Я реализовала чтение из файла, занесение в массив, сортировку по возрастанию, но вот я не могу понять, как для определения порядка сортировки создать классы, которые реализуют интерфейс Comparator. Насколько я понимаю,сортировку по убыванию надо тоже как-то через Comparator.
package com.company;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void funk()throws FileNotFoundException{
String path =
"C:\\Users\\Ira\\Desktop\\PROGRAMMS\\JAVA\\1\\2\\out\\zfr.txt";
File file = new File(path);
Scanner scanner = new Scanner(file);
String line = scanner.nextLine();
String[] numbersString = line.split(" ");
int[] numbers = new int[numbersString.length];
int[] numberss = new int[numbersString.length];
int counter = 0;
for (String number : numbersString) {
numbers[counter++] = Integer.parseInt(number);
}
System.out.println(Arrays.toString(numbers));
scanner.close();
System.out.print("[");
for (int j=0;j<numbers.length;j++){
int sum=0;
while(numbers[j] != 0){
sum += (numbers[j] % 10);
numbers[j]/=10;
}
numberss[j]=sum;
System.out.print(numberss[j] + " ");
}
System.out.println("]");
java.util.Arrays.sort (numberss);
System.out.print("[");
for (int j=0;j<numbers.length;j++) {
System.out.print(numberss[j] + " ");
}
System.out.println("]");
}
public static void main(String[] args) throws FileNotFoundException {
funk();
}
}
Необходимо создать два класса, реализовать в них интерфейс Comparator, если у целочисленный значения в массиве типа Integer, то можно сразу типизировать Comparator.
class Test implements Comparator<Integer>
далее в этом же классе реализуем метод compare(). Если сразу типизировать интерфейс, как я выше написал, то метод уже сам подставит нужный тип.
а в методе уже реализовать сортировку, например return o2 - o1; отсортирует по убыванию, о1 - о2 отсортирует по возрастанию.
static class Test implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
}
Далее в главном классе уже можно использовать классы-компораторы У метода Arrays.sort есть конструктор, подаем массив данных и класс-компоратор.
Arrays.sort(test, new Test());
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
intellij idea не предлагает мне достать из пакета Util > ConnectionManager, чтобы потом преобразовать в
Проверьте: - в консоли Firebase - DataBase что вы работаете с Realtime Database, а не Cloud Databese; - проверьте в Realtime Database правила чтения и записи, что бы без ограничений...
Выборка всех элементов методом getAll() работает, а выборка методом get() нетДаже напрямую указываю строку, толку нет
Нужно написать бота, который по команде дает ссылку на скачивание файла с ПКК примеру у меня в файл пишутся логи, нужно чтобы в Telegram при команде...