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

Basket

05.11.2022, 16:42. Показов 9613. Ответов 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
3389 / 2708 / 574
Регистрация: 04.09.2018
Сообщений: 8,523
Записей в блоге: 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
3389 / 2708 / 574
Регистрация: 04.09.2018
Сообщений: 8,523
Записей в блоге: 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
3389 / 2708 / 574
Регистрация: 04.09.2018
Сообщений: 8,523
Записей в блоге: 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
3389 / 2708 / 574
Регистрация: 04.09.2018
Сообщений: 8,523
Записей в блоге: 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
3389 / 2708 / 574
Регистрация: 04.09.2018
Сообщений: 8,523
Записей в блоге: 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
3389 / 2708 / 574
Регистрация: 04.09.2018
Сообщений: 8,523
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru