@vlad12156
Студент

Как вывести данные в заданом порядке?

public class Menu {
    Scanner scanner = new Scanner(System.in);
    static List<String> listSouvenirs = new ArrayList<>();
    static List<String> listManufacturer = new ArrayList<>();
    static List<String> list = new ArrayList<>();
    




    public static void listAddSouvenirs(Souvenirs s){
        listSouvenirs.add(s.getName());
        listSouvenirs.add(s.getInfo());
        listSouvenirs.add(s.getDate());
        listSouvenirs.add(s.getPrice());

    }

    public static void listAddManufacturer(Manufacturer m){
        listManufacturer.add(m.getName());
        listManufacturer.add(m.getCountry());

    }


    public int menu1(){

        boolean b;
        do {
            System.out.println("Введите имя продукта, информацию от производителя, дату изготовления и цену");
            String prodStr1 = scanner.nextLine();
            String[] souvenirs = prodStr1.split("  ");
            Menu.listAddSouvenirs(new Souvenirs(souvenirs[0], souvenirs[1], souvenirs[2], souvenirs[3]));
            System.out.println("Введите имя производителя, город производителя");
            String prodStr2 = scanner.nextLine();
            String[] manufacturer = prodStr2.split("  ");
            Menu.listAddManufacturer(new Manufacturer(manufacturer[0], manufacturer[1]));
            System.out.println("Введите Y или y для продолжения");
            String check = scanner.nextLine().toLowerCase();
            b = check.contains("Y".toLowerCase());
        } while (b);
        return 1;
    }
}

public class Main {

    public static void main(String[] args) {
        Menu menu = new Menu();
        Scanner scanner = new Scanner(System.in);



        int n = 0;
        do {

            System.out.println("Введите номер для навигации в меню : ");
            int m = scanner.nextInt();
            switch (m) {
                case 1 -> menu.menu1();
                case 2 -> menu.menu2();
                case 3 -> menu.menu3();
                case 4 -> menu.menu4();
                case 5 -> menu.menu5();
                case 6 -> menu.menu6();
                case 7 -> menu.menu7();
                case 8 -> menu.menu8();
                case 9 -> menu.menu9();
                case 10 -> menu.menu10();
            }
            System.out.println("Введите 1 для перехода в меню");
            n = scanner.nextInt();
        } while (n == 1);


    }
}

У меня программа которая запрашивает имя продукта, информацию, дату и цену мне нужно чтобы из списка выводились данные по годам. Например (2019, 1999, 2021,1999) и чтобы сначала вывелся 1999, 1999, а потом остальные.
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Примерно так:
import java.time.LocalDate;
import java.util.List;

class Scratch {

    public static void main(String[] args) {
        var souvenirs = List.of(
                new Souvenir("2", LocalDate.of(2000, 1, 1)),
                new Souvenir("1", LocalDate.of(1999, 1, 1))
        );

        var souvenirsSorted = souvenirs.stream()
                .sorted(Scratch::compareSouvenirs)
                .toList();

        System.out.println(souvenirsSorted);
    }

    private static int compareSouvenirs(Souvenir souvenir1, Souvenir souvenir2) {
        return souvenir1.date.compareTo(souvenir2.date);
    }

    record Souvenir(String name, LocalDate date) {
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы