From cd38819a653490c6b1bd724be5b260b288f2fefc Mon Sep 17 00:00:00 2001 From: Denis Merioara Date: Fri, 24 May 2024 08:03:30 +0300 Subject: [PATCH] feat: execution-task --- .../practicum/dinner/DinnerConstructor.java | 36 +++++++++++++++++++ src/ru/practicum/dinner/Main.java | 34 +++++++++++++++++- 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/ru/practicum/dinner/DinnerConstructor.java b/src/ru/practicum/dinner/DinnerConstructor.java index 29da0b5..73571a4 100644 --- a/src/ru/practicum/dinner/DinnerConstructor.java +++ b/src/ru/practicum/dinner/DinnerConstructor.java @@ -1,5 +1,41 @@ package ru.practicum.dinner; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Random; + +/** + * хранению блюд и генерации комбинаций + */ +// вы не должны использовать объекты класса Scanner внутри DinnerConstructor. public class DinnerConstructor { + public static HashMap> types = new HashMap<>(); + static Random random = new Random(); + + // mock + // DinnerConstructor() { + // types.put("Первое", new ArrayList<>(Arrays.asList("Борщ", "Суп", "Щи"))); + // types.put("Второе", new ArrayList<>(Arrays.asList("Макароны", "Гречка", "Рис"))); + // types.put("Напиток", new ArrayList<>(Arrays.asList("Чай", "Компот", "Сок"))); + // } + + ArrayList> generateCombo(int numberOfCombos, ArrayList dishTypes) { + ArrayList> result = new ArrayList<>(); + + for (int index = 0; index < numberOfCombos; index++) { + ArrayList combo = new ArrayList<>(); + + for (String dishType : dishTypes) { + ArrayList dishes = types.get(dishType); + int randomIndex = random.nextInt(dishes.size()); + String dish = dishes.get(randomIndex); + combo.add(dish); + } + + result.add(combo); + } + return result; + } } diff --git a/src/ru/practicum/dinner/Main.java b/src/ru/practicum/dinner/Main.java index f68de29..6312572 100644 --- a/src/ru/practicum/dinner/Main.java +++ b/src/ru/practicum/dinner/Main.java @@ -1,5 +1,7 @@ package ru.practicum.dinner; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Scanner; public class Main { @@ -24,6 +26,8 @@ public static void main(String[] args) { break; case "3": return; + default: + System.out.println("Неизвестная команда, попробуйте еще раз"); } } } @@ -42,6 +46,12 @@ private static void addNewDish() { String dishName = scanner.nextLine(); // добавьте новое блюдо + ArrayList dishes = dc.types.get(dishType); + if (dishes == null) { + dc.types.put(dishType, new ArrayList<>(Arrays.asList(dishName))); + } else { + dishes.add(dishName); + } } private static void generateDishCombo() { @@ -52,14 +62,36 @@ private static void generateDishCombo() { scanner.nextLine(); System.out.println("Вводите типы блюда, разделяя символом переноса строки (enter). Для завершения ввода введите пустую строку"); + ArrayList dishTypes = new ArrayList<>(); String nextItem = scanner.nextLine(); //реализуйте ввод типов блюд while (!nextItem.isEmpty()) { + ArrayList dishes = dc.types.get(nextItem); + boolean isExistType = dishes != null; + + if (!isExistType) { + System.out.println("Не удалось найти тип блюда: " + nextItem); + } else { + dishTypes.add(nextItem); + } + nextItem = scanner.nextLine(); } // сгенерируйте комбинации блюд и выведите на экран - + System.out.println(); + + ArrayList> combos = dc.generateCombo(numberOfCombos, dishTypes); + for (int index = 0; index < combos.size(); index++) { + System.out.print("Комбо " + (index + 1) + " "); + System.out.print("["); + ArrayList dishes = combos.get(index); + for (int dishIndex = 0; dishIndex < dishes.size(); dishIndex++) { + String item = dishes.get(dishIndex); + System.out.print(item + (dishIndex + 1 < dishes.size() ? ", " : "")); + } + System.out.println("]"); + } } }