Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 10.04.2021
Сообщений: 1

Архитектура классов

10.04.2021, 17:58. Показов 843. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер друзья. Я нашел код но выдает ошибку что нету void main.. и что надо написать на мэйн сортировку или не понимаю помогите. Уже несколько месяцев не написал код на джаве забыл

сам задание --->>нужно определить иерархию овощей. И сделать салат. Посчитать калорийность. Провести
сортировку овощей для салата на основе одного из параметров. Найти овощи в салате,
соответствующие заданному диапазону калорийности.

Вот сам код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package ua.epam.kitchen;
public class Component {
    private final Vegetable ingredient;
    private double amount;
    public Component(Vegetable veggie, double amount) {
        this.ingredient = veggie;
        if(amount < 0) {
            throw new IllegalArgumentException("Amount must be nonnegative");
        }
        this.amount = amount;
    }
    public Component(Vegetable veggie) {
        this.ingredient = veggie;
        this.amount = 0;
    }
 
    public double getAmount() {
        return this.amount;
    }
    public Vegetable getIngredient() {
        return this.ingredient;
    }
    public void addAmount(double amt) {
        if(amt < 0) {
            throw new IllegalArgumentException("Amount must be nonnegative");
        }
        this.amount += amt;
    }
   public void use(double amt) {
        if(amt < 0) {
            throw new IllegalArgumentException("Amount must be nonnegative");
        }
        else if(this.amount - amt >= 0) {
            this.amount -= amt;
        }
        else {
            throw new ArithmeticException("Not enough " + this.getIngredient());
        }
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package ua.epam.kitchen;
import java.util.ArrayList;
public class Kitchen {
    
    private final StockRoom stockRoom;
    public Kitchen(StockRoom storage) {
        this.stockRoom = storage;
    }
    
    public void makeSalad(Salads salad) {
        if(this.stockRoom.verifyAmount(salad)) {
            for(Component component : salad.ingredients) {
                this.stockRoom.use(component.getIngredient(), component.getAmount());
            }
        }
    }
    
    public double[] saladNutrition(Salads salad) {
        double calories = 0;
        double fats = 0;
        double carbs = 0;
        double proteins = 0;
        double weight = 0;
        
        for(Component component : salad.ingredients) {
 
            double convertedAmount = component.getAmount() * 10;
            
            calories += convertedAmount * component.getIngredient().getCalories();
            fats += convertedAmount * component.getIngredient().getFats();
            proteins += convertedAmount * component.getIngredient().getProteins();
            carbs += convertedAmount * component.getIngredient().getCarbs();
            weight += component.getAmount();
        }
        return new double[] {weight, calories, proteins, carbs, fats}; 
    }
    
    public void printNutrition(Salads salad) {
        double[] info = this.saladNutrition(salad);
        System.out.println("Nutrition Facts for " + salad);
        System.out.println("Weight Netto: " + (float) info[0] + " kg");
        System.out.println("Total Calories: " + (float) info[1]);
        System.out.println("Proteins: " + (float) info[2]);
        System.out.println("Carbohydrates: " + (float) info[3]);
        System.out.println("Fats: " + (float) info[4]);
    }
    public ArrayList findVeggiesInRange(Salads salad, double minCal, double maxCal) {
        ArrayList<Component> result = new ArrayList();
        for(Component component : salad.ingredients) {
            double current = component.getIngredient().getCalories();
            if(current >= minCal && current <= maxCal) {
                result.add(component);
            }
        }
        return result;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package ua.epam.kitchen;
import static ua.epam.kitchen.Vegetable.*;
public enum Salads {
    
    TOMATOCUCUMBERSALAD(new Component[] {new Component(CUCUMBER, 0.3), new Component(TOMATO, 0.3), 
                                         new Component(ONION, 0.2)}),
    
    SUMMERCORNSALAD(new Component[] {new Component(CORN, 0.4), new Component(TOMATO, 0.4), 
                                     new Component(ONION, 0.2)}),
    
    BABYZUCCHINISALAD(new Component[] {new Component(ZUCCHINI, 0.4), new Component(CUCUMBER, 0.3), 
                                       new Component(ONION, 0.2)}),
    
    FRESHBROCCOLISALAD(new Component[] {new Component(BROCCOLI, 0.4), new Component(TOMATO, 0.2), 
                                        new Component(POTATO, 0.3), new Component(PARSLEY, 0.1)}),
    
    SWEETCARROTSALAD(new Component[] {new Component(CARROT, 0.4), new Component(CORN, 0.3), 
                                      new Component(CUCUMBER, 0.2)}),
    
    CRUNCHYPEASALAD(new Component[] {new Component(PEAS, 0.3), new Component(CELERY, 0.3), 
                                     new Component(ONION, 0.2), new Component(TOMATO, 0.2)});
    
    public Component[] ingredients;
    
    Salads(Component[] veggies) {
        ingredients = veggies;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package ua.epam.kitchen;
import java.util.ArrayList;
import java.util.Comparator;
public class StockRoom { 
    private ArrayList<Component> storage;
    public void activate() {
        if(this.storage == null) {
            this.storage = new ArrayList();
        }
    }
    public void purchase(Component veggie) {
        if(veggie == null) {
            throw new IllegalArgumentException("Component is not allowed to be null");
        }
        int index = this.indexOf(veggie.getIngredient());
        
        if(index < 0) {
            this.storage.add(veggie);
        }
        else {
            this.storage.get(index).addAmount(veggie.getAmount());
        }
    }
    public void purchaseSupply(Component[] veggies) {
        for(Component veggie : veggies) {
            this.purchase(veggie);
        }
    }
    public int indexOf(Vegetable veggie) {
        
        //find in the storage vegetable with the same type
        for(int pos=0, length=this.storage.size(); pos<length; pos++) {
            if(this.storage.get(pos).getIngredient() == veggie) {
                return pos;
            }
        }
        //if not found
        return -1;
    }
    public void sort(Comparator c) {
        if(this.storage.size() <= 1) {
            return;
        }
        boolean sorted = false;
        while(!sorted) {
            sorted = true;
            for(int pos=0,length=this.storage.size(); pos<length-1; pos++) {
                if(c.compare(this.storage.get(pos), this.storage.get(pos+1)) > 0) {
                    sorted = false;
                    Component temp = this.storage.get(pos);
                    this.storage.set(pos, this.storage.get(pos+1));
                    this.storage.set(pos+1, temp);
                }
            }
        }
    }
    public void use(Vegetable veggie, double amt) {
        int index = this.indexOf(veggie);
        if(index < 0) {
            System.out.println("Not enough " + veggie);
        }
        else {
            this.storage.get(this.indexOf(veggie)).use(amt);
        }
    }
    public boolean verifyAmount(Salads salad) {
        for(Component c : salad.ingredients) {
            if(c.getAmount() > this.getAmount(c.getIngredient())) {
                System.out.println("Not enough " + c.getIngredient());
                return false;
            }
        }
        return true;
    } 
    public int size() {
        return this.storage.size();
    }
    public double getAmount(Vegetable veggie) {
        int index = this.indexOf(veggie);
        
        if(index < 0) { return 0; }
        else { return this.storage.get(index).getAmount(); }
    }
    public Component get(int index) {
        return this.storage.get(index);
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package ua.epam.kitchen;
public enum Vegetable {
    
    //Alliums
    GARLIC(6.0, 30, 0.5, 149),
    ONION(1.1, 9, 0.1, 40),
    
    //Cabbages
    CABBAGE(1.3, 6, 0.1, 25),
    BROCCOLI(2.8, 7, 0.4, 34),
    CAULIFLOWER(1.8, 5, 0.3, 25),
    
    //Cucurbi
    CUCUMBER(0.6, 3.6, 0.1, 16),
    PUMPKIN(1, 4.2, 0.1, 25),
    ZUCCHINI(1.2, 3.1, 0.3, 17),
    
    //Roots
    CARROT(0.9, 10, 0.2, 41),
    CELERY(0.7, 3, 0.2, 16),
    RADISH(0.7, 3.4, 0.1, 16),
    
    //Tubers
    POTATO(2, 17, 0.1, 77),
    SWEETPOTATO(1.6, 20, 0, 86),
    
    //Other
    CORN(3.3, 18.7, 1.3, 86),
    PARSLEY(3.7, 8.1, 0, 45),
    PEAS(5.4, 14.4, 0.4, 81),
    TOMATO(0.6, 3.6, 0.1, 16);
    
    
    //Nutrition facts (for 100g)
    private final double proteins;
    private final double carbohydrates;
    private final double fats;
    private final double calories;
    
    Vegetable(double proteins, double carbs, double fats, double cal) {
        
        this.proteins = proteins;
        this.carbohydrates = carbs;
        this.fats = fats;
        this.calories = cal;
    }
    public double getProteins() {
        return this.proteins;
    }
    public double getCarbs() {
        return this.carbohydrates;
    }
    
    public double getFats() {
        return this.fats;
    }
    public double getCalories() {
        return this.calories;
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.04.2021, 17:58
Ответы с готовыми решениями:

Архитектура проекта
Здравствуйте. Поставили задачу написать программу - систему учета сведения о пользователях некоторой информационной системы....

Архитектура MVC
Добрый день, уважаемые коллеги :senor: Я самоучка и поэтому возможно мой вопрос будет странный, но все же я не смог найти на него...

Архитектура приложения
Всем привет! Создаю гуи приложение и встал вопрос архитектуры. Допустим есть класс MenuBar и MainWindow. Например, по нажатия кнопки в...

4
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
13.04.2021, 18:26
Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
и что надо написать на мэйн сортировку
Вам нужно реализовать свою сортировку или использовать из приведенного епамовского кода?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.04.2021, 18:32

Не по теме:

Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
ua.epam.kitchen


0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.04.2021, 18:56
Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
нужно определить иерархию овощей
qwerrttyy01 <- картошка
Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
Уже несколько месяцев не написал код на джаве
ты хотел сказать никогда?
0
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
13.04.2021, 19:07
Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
сам задание --->>
Думаю, что ваше задание заключается в использовании готового кода.
Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
нужно определить иерархию овощей.
Смотрим, что нужно из ингредиентов
Java
1
Salads salad = Salads.FRESHBROCCOLISALAD;
Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
И сделать салат.
Открываем склад
Java
1
2
StockRoom sr = new StockRoom();
sr.activate();
Типа закупаемся нужными ингредиентами и отвозим их на склад
Java
1
sr.purchaseSupply(new Component[] {new Component(BROCCOLI, 0.4), new Component(TOMATO, 0.2), new Component(POTATO, 0.3), new Component(PARSLEY, 0.1)});
Приходим на кухню
Java
1
Kitchen kitchen = new Kitchen(sr);
И делаем салат
Java
1
kitchen.makeSalad(salad);
Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
Посчитать калорийность.
Считаем
Java
1
System.out.println((float) kitchen.saladNutrition(salad)[1]);
Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
Провести
сортировку овощей для салата на основе одного из параметров.
Определяем компаратор. Сравниваем по названию ингредиента.
Java
1
2
3
4
5
6
7
8
9
10
11
12
Comparator<Component> comparator = (o1, o2) -> o1.getIngredient().compareTo(o2.getIngredient());
// Было
for (int i=0; i<sr.size(); i++) {
        System.out.println(sr.get(i).getIngredient());          
}
 
sr.sort(comparator);
 
// Стало
for (int i=0; i<sr.size(); i++) {
        System.out.println(sr.get(i).getIngredient());          
}
Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
Найти овощи в салате,
соответствующие заданному диапазону калорийности.
Находим ингредиенты в диапазоне от 30 до 50.
Java
1
2
3
4
List<Component> list = kitchen.findVeggiesInRange(salad, 30, 50);
for(Component component : list) {
        System.out.println(component.getIngredient());
}
Цитата Сообщение от qwerrttyy01 Посмотреть сообщение
Я нашел код но выдает ошибку что нету void main..
Ну main метод сами сможете сделать и в него вставить:
Код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
        Salads salad = Salads.FRESHBROCCOLISALAD;
 
        StockRoom sr = new StockRoom();
        sr.activate();
        sr.purchaseSupply(new Component[] {new Component(BROCCOLI, 0.4), new Component(TOMATO, 0.2), new Component(POTATO, 0.3), new Component(PARSLEY, 0.1)});
     
        Kitchen kitchen = new Kitchen(sr);
        kitchen.makeSalad(salad);
        
        System.out.println((float) kitchen.saladNutrition(salad)[1]);
        
        Comparator<Component> comparator = (o1, o2) -> o1.getIngredient().compareTo(o2.getIngredient());
        
        for (int i=0; i<sr.size(); i++) {
            System.out.println(sr.get(i).getIngredient());          
        }
        
        sr.sort(comparator);
        for (int i=0; i<sr.size(); i++) {
            System.out.println(sr.get(i).getIngredient());          
        }
        
        List<Component> list = kitchen.findVeggiesInRange(salad, 30, 50);
        for(Component component : list) {
            System.out.println(component.getIngredient());
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.04.2021, 19:07
Помогаю со студенческими работами здесь

Архитектура веб-приложения
Ребят, я запутался. Помогите распутаться, пожалуйста. Проект очень схож с интернет-магазином. Человек заходит, выбирает категории...

Архитектура многопоточного приложения
Всем привет. Есть объект, выполняющий ГУИ билдинг. Для этого необходимо загрузить данные из файла и далее записать(для...

Архитектура игрового сервера
Всем привет! У меня накопился вопрос, который не хочет решаться долгое время. Предположим, есть онлайн-игра, и для нее написан...

Трехуровневая архитектура с клиентом на JavaFX
Клиент JavaFX, сервер C++/PHP, база MySQL Не могу найти в интернете годного источника по этой теме. Буду сильно признателен за какую то...

EJB правильная архитектура приложения
Добрый день! Посоветуйте, пожалуйста, где можно найти (почитать, посмотреть код...) правильные подходы к построению приложений основанных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru