1 / 1 / 0
Регистрация: 05.11.2022
Сообщений: 31

Basket

05.11.2022, 16:42. Показов 9719. Ответов 14
Метки java (Все метки)

Студворк — интернет-сервис помощи студентам
*Допишите в класс Basket (проект в репозитории ObjectsAndMethods или, если у вас его нет, скачайте архив, приложенный к заданию):

Переменную “totalWeight”, которая будет содержать общую массу всех товаров, добавленных в корзину:
Начальное значение переменной должно быть равно 0.
При добавлении в корзину товара методом add() с параметром веса (см. ниже описание этого метода) добавляйте переданный в метод вес к этой переменной.
Если вызывается уже существующий в классе метод add(), не содержащий параметр веса (weight), эта переменная не должна изменяться.
Метод add с дополнительным параметром веса (weight):
public void add(String name, int price, int count, double weight)
Метод должен переиспользовать существующие методы добавления и добавлять указанный в их параметрах вес товаров к общему весу корзины.
Метод, который будет возвращать значение массы всех товаров в корзине:
public double getTotalWeight()*

Добрейшего времени суток вам товарищи! Я пытался выполнить это задание сам но не совсем понимаю как это сделать. К меня есть пара идей однако довести их до ума пока не вышло просто не до конца понимаю логическую цепочку. Буду крайне признателен за пример с подробным или хотя бы кратким пояснением.

Добавлено через 7 минут
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
public class Basket {
 
    private static int count = 0;
    private String items = "";
    private int totalPrice = 0;
    private int limit;
 
    public Basket() {
        increaseCount(1);
        items = "Список товаров:";
        this.limit = 1000000;
    }
 
    public Basket(int limit) {
        this();
        this.limit = limit;
    }
 
    public Basket(String items, int totalPrice) {
        this();
        this.items = this.items + items;
        this.totalPrice = totalPrice;
    }
 
    public static int getCount() {
        return count;
    }
 
    public static void increaseCount(int count) {
        Basket.count = Basket.count + count;
    }
 
    public void add(String name, int price) {
        add(name, price, 1);
    }
 
    public void add(String name, int price, int count) {
        boolean error = false;
        if (contains(name)) {
            error = true;
        }
 
        if (totalPrice + count * price >= limit) {
            error = true;
        }
 
        if (error) {
            System.out.println("Error occured :(");
            return;
        }
 
        items = items + "\n" + name + " - " +
                count + " шт. - " + price;
        totalPrice = totalPrice + count * price;
    }
 
    public void clear() {
        items = "";
        totalPrice = 0;
    }
 
    public int getTotalPrice() {
        return totalPrice;
    }
 
    public boolean contains(String name) {
        return items.contains(name);
    }
 
    public void print(String title) {
        System.out.println(title);
        if (items.isEmpty()) {
            System.out.println("Корзина пуста");
        } else {
            System.out.println(items);
        }
    }
}
Сам код собственно.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.11.2022, 16:42
Ответы с готовыми решениями:

Как в bitrix:sale.basket.basket.small.mail вывести детальную картинку?
Сам вопрос в теме. Или может не обязательно использовать в рассылке именно этот элемент? Добавлено через 9 минут *компонент

sale.basket.basket.line ( как в демо сайте )
Здравствуйте, создал я демо интернет-магазин, увидел там как реализована малая корзина, моя малая корзина под чти такае же только добавлен...

Композит для корзины (bitrix:sale.basket.basket)
Добрый всем, помогите плиз настроить композит, где тут динамичные зоны и где статичные?!...

14
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,686
Записей в блоге: 3
05.11.2022, 16:48
Java
1
2
3
4
5
6
7
8
9
10
private double totalWeight;
 
public void add(String name, int price, int count, double weight) {
    // ...
    totalWeight += weight;
}
 
public double getTotalWeight() {
    return totalWeight;
}
1
1 / 1 / 0
Регистрация: 05.11.2022
Сообщений: 31
05.11.2022, 17:01  [ТС]
Спасибо ещё таков вопрос если вам не сложно объясните новичку. Как мне теперь это добавить в корзину? public void public void add(String name, int price, int count, double weight) {
// ... Мне сюда писать имя това и его вес?
totalWeight += weight;
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,686
Записей в блоге: 3
05.11.2022, 17:05
Ты должен переиспользовать существующий метод public void add(String name, int price, int count) в новом методе, где еще добавился вес.

Добавлено через 36 секунд
Цитата Сообщение от Rayshin Посмотреть сообщение
Мне сюда писать имя това и его вес?
Сюда как раз вставляешь свой метод без параметра веса.
0
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
05.11.2022, 17:09
Лучший ответ Сообщение было отмечено Rayshin как решение

Решение

wizard41, а не надо наоборот взять все с Basket#add(String, int, int) и переписать в Basket#add(String, int, int, double), оставив в первом лишь обращение к последнему. Так сказать, чтоб сохранялась преемственность по отфутболиванию?
Прим:
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
public void add(String name, int price) {
    add(name, price, 1);
}
 
public void add(String name, int price, int count) {
    add(name, price, count, 0);
}
 
public void add(String name, int price, int count, double weight) {
    boolean error = false;
    if (contains(name)) {
        error = true;
    }
    if (totalPrice + count * price >= limit) {
        error = true;
    }
 
    if (error) {
        System.out.println("Error occured ");
        return;
    }
 
    items = items + "\n" + name + " - " +
            count + " шт. - " + price;
    totalPrice = totalPrice + count * price;
    totalWeight += weight;
}
1
1 / 1 / 0
Регистрация: 05.11.2022
Сообщений: 31
05.11.2022, 17:12  [ТС]
Спасибо огромное теперь понятно.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,686
Записей в блоге: 3
05.11.2022, 17:14
Coffeini, много лишнего. В задании явно говорится про переиспользование методов.
Понятно, что способов миллион. Но для ТСа требуется что попроще.

Добавлено через 1 минуту
Да, и вот эта конструкция:
Java
1
2
3
if (totalPrice + count * price >= limit) {
    error = true;
}
не совсем ясна.
0
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
05.11.2022, 17:14
Цитата Сообщение от wizard41 Посмотреть сообщение
много лишнего
В каком плане? Просто в вашем случае неявно, что
Цитата Сообщение от Rayshin Посмотреть сообщение
переменная не должна изменяться
Хотя могу быть неправ. Просто хочу разобраться.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,686
Записей в блоге: 3
05.11.2022, 17:17
Coffeini, так она и не изменится, если вызвать просто метод public void add(String name, int price, int count). В данном случае метод с весом становится перегрузкой к первому методу.
0
1 / 1 / 0
Регистрация: 05.11.2022
Сообщений: 31
05.11.2022, 17:18  [ТС]
Да я согласен у них обучение разорвано фиг пойми каки многие базовые вещи вообще не рассказываются. Первые модули ещё нечего но чем дальше тем больше горит потому что и половины того что говорят или показывают не понятно, а задания вообще атас если раньше они были похожи на задания для новичка то это уже как то совсем не для новичка. Уж не мне судить об уровне этого задания но они хотя бы пояснения довали нормальные или на худой конец ссылки на материал для практики.
0
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
05.11.2022, 17:20
Цитата Сообщение от wizard41 Посмотреть сообщение
так она и не изменится
Это-то понятно. Просто это неявно. И не из чего не следует.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,686
Записей в блоге: 3
05.11.2022, 17:21
Цитата Сообщение от Coffeini Посмотреть сообщение
И не из чего не следует.
Ну как же не следует? Если никаких изменений с переменной totalWeight не происходит.
0
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
05.11.2022, 17:25
wizard41, возможно. Все равно мне кажется неправильным как переписывать уже существующие методы, так и нарушать преемственность. И вот что менее неправильно непонятно.
0
1 / 1 / 0
Регистрация: 05.11.2022
Сообщений: 31
05.11.2022, 17:26  [ТС]
Да не норм та всё тут есть логика завязанная на перегрузке методов если понимаешь что и откуда растёт то таких эмоций не возникает.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,686
Записей в блоге: 3
05.11.2022, 17:45
E.g.:
у нас есть метод добавления товара:
Java
1
2
3
4
5
6
7
8
9
public void add(String name, int price, int count) {
    boolean error = false;
    if (contains(name)) {
        error = true;
    }
    this.name = name;
    this.price = price;
    this.count = count;
}
Тут мы переменную веса не изменяем. Правильно?
Теперь перегрузим метод add:
Java
1
2
3
4
5
6
public void add(String name, int price, int count, double weight) {
    //Вызываем первый метод
    add(name, price, count);
    //А тут уже меняем переменную totalWeight
    totalWeight += weight;
}
Добавлено через 1 минуту
Цитата Сообщение от Coffeini Посмотреть сообщение
переписывать уже существующие методы
Вот я как раз о том и твержу - никаких переписываний не нужно. Нужно просто их переиспользовать.

Добавлено через 17 минут
Coffeini, тут явный вопрос в другом: куда эти товары добавляются, если в классе нет ни одной коллекции?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.11.2022, 17:45
Помогаю со студенческими работами здесь

Jquery Basket
Подскажите. Как реализовать корзину покупок с помощью jquery cookie? Как хранить массив из 'id' ? Как добавлять? Слышал что JSON нужен...

Add basket
Здравствуйте, вот ошибка: Warning: Cannot modify header information - headers already sent by (output started at...

Как ограничить Basket по ширине формы? Я тут хочу сделать по крайнему эллипсу чтобы считывалось
procedure TForm1.Basket(Sender: TObject); begin a:=205; b:=285; with Form1.Canvas do begin Pen.Color:=clBlack; ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru