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

Реализовать вложенный статический класс для накопления статистики по количеству объектов по типам

10.02.2022, 00:29. Показов 757. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!

Не знаю как выполнить последний пункт задания, два вечера пыталась, но безрезультатно. Может кто-нибудь идею подкинуть каким образом это реализовать?


Задача
Описать класс для представления музыкальных инструментов с полями: название, тип (целое число), габариты, цена, год производства. Поле «габариты» реализовать в виде внутреннего класса с полями: width, height, depth. Также добавить вложенный статический класс для накопления статистики по инструментам: количество объектов по типам.


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
public class MusicTest {
    public static void main ( String[] args ) {
        Instruments i =
                new Instruments (
                        "гусли",
                        1,
                        new Instruments.Size ( 35, 25, 45 ),
                        10000,
                        2000 );
 
        System.out.println ( i );
    }
}
 
class Instruments {
    String name;
    int type;
    Size size;
    int price;
    int yearOfManufacture;
 
    Instruments ( String name, int type, Size size, int price, int yearOfManufacture ) {
        this.name = name;
        this.type = type;
        this.size = size;
        this.price = price;
        this.yearOfManufacture = yearOfManufacture;
    }
 
    @Override
    public String toString () {
        return "Название: " + name +
                ", тип: " + type +
                ", размер: " + size +
                ", цена: " + price +
                ", год: " + yearOfManufacture;
    }
 
    static class Size {
 
        int width;
        int height;
        int depth;
 
        public Size ( int width, int height, int depth ) {
            this.width = width;
            this.height = height;
            this.depth = depth;
        }
 
        private int calculateSize () {
            return width * height * depth;
        }
 
        @Override
        public String toString () {
            return calculateSize () + "";
        }
    }
 
    static class Stat {
 
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2022, 00:29
Ответы с готовыми решениями:

Статический вложенный класс
Добрый день. Только начала изучать Java. Пожалуйста, скажите, как синтаксически реализовать следующее: есть класс А, есть класс В...

Правильно определить статический вложенный класс
Здравствуйте! С++ знаю очень плохо, не пойму, как определить вложенный статический класс, наследуемый от родительского? Пытаюсь так: ...

Почему запрещено создавать статический вложенный(локальный) класс внутри статического метода
class Outer { public static void mStatic(){ static class A{ static int staticInnerField =1; ...

5
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
10.02.2022, 01:34
Создаешь поле в классе стат, в котором будешь хранить инфу. В конструкторе класса инструмент, заполняешь эту инфу
1
0 / 0 / 0
Регистрация: 08.02.2022
Сообщений: 7
10.02.2022, 02:08  [ТС]
StepFather322, большущее спасибо! Это то, что предполагалось?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    Instruments ( String name, int type, Size size, int price, int yearOfManufacture ) {
 
        this.name = name;
        this.type = type;
        this.size = size;
        this.price = price;
        this.yearOfManufacture = yearOfManufacture;
 
        if (type - 1 == 0) Stat.stat1++;
        if (type - 2 == 0) Stat.stat2++;
        if (type - 3 == 0) Stat.stat3++;
        if (type - 4 == 0) Stat.stat4++;
 
    }
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
10.02.2022, 02:45
Цитата Сообщение от Mnemosyne Посмотреть сообщение
type - 1 == 0
а не легче написать type == 1 ?
Цитата Сообщение от Mnemosyne Посмотреть сообщение
if (type - 1 == 0) Stat.stat1++;
        if (type - 2 == 0) Stat.stat2++;
        if (type - 3 == 0) Stat.stat3++;
        if (type - 4 == 0) Stat.stat4++;
А что будешь делать, если у тебя будет 100 видов инструментов? Сделай хеш сет и добавляй туда значения поля type
1
0 / 0 / 0
Регистрация: 08.02.2022
Сообщений: 7
10.02.2022, 03:04  [ТС]
Цитата Сообщение от StepFather322 Посмотреть сообщение
а не легче написать type == 1 ?
ну точно)))

Цитата Сообщение от StepFather322 Посмотреть сообщение
А что будешь делать, если у тебя будет 100 видов инструментов?
когда писала об этом же подумала, и что наверняка в джава есть инструмент для оптимального решения этой проблемы, но я о нем пока не знаю)) Ну вот теперь узнаю)
0
0 / 0 / 0
Регистрация: 13.08.2023
Сообщений: 1
13.08.2023, 09:34
Я предлагаю такое решение данной задачи:


Добавлено через 47 секунд
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
88
89
90
public class app {
    public static void main(String[] args) {
 /*           Задача 2. Описать класс для представления музыкальных инструментов с полями:
     название, тип (целое число), габариты, цена, год производства. Поле «габариты» реализовать в
     виде внутреннего класса с полями: width, height, depth. Также добавить вложенный статический класс
     для накопления статистики по инструментам: количество объектов по типам.
      */
        Instrument M = new Instrument("molotok", 0, 2005, 300,
                new Instrument.Gabarit(10f, 10f, 12f));
        M.getInstrument();
 
        Instrument M1 = new Instrument("контрабас", 2, 2005, 300,
                new Instrument.Gabarit(10f, 10f, 12f));
        M1.getInstrument();
 
        Instrument M2 = new Instrument("бубен", 2, 2005, 300,
                new Instrument.Gabarit(10f, 10f, 12f));
        M2.getInstrument();
 
        Instrument M3 = new Instrument("дудка", -1, 2005, 300,
                new Instrument.Gabarit(10f, 10f, 12f));
        M3.getInstrument();
 
        Instrument M4 = new Instrument("molotok", 2, 2005, 300,
                new Instrument.Gabarit(10f, 10f, 12f));
        M4.getInstrument();
 
        Instrument M5 = new Instrument("арфа", 0, 2005, 300,
                new Instrument.Gabarit(10f, 10f, 12f));
        M5.getInstrument();
        Instrument.Stat.statdisp();
    }
}
    class Instrument {
        String name = " ";
        int type = 0, year = 0, price = 0;
        Gabarit gabarit;
        static int id = 0;
 
        Instrument(String n, int t, int y, int p, Gabarit gabarit) {
 
            this.name = n;
            this.type = t;
            this.year = y;
            this.price = p;
            this.gabarit = gabarit;
            Stat.arrayList.add(type);    // заполняем массив для статистики
        }
 
        public void getInstrument() {
            System.out.println("Наименование\t"+this.name + "\tтип\t" + this.type + "\tгод производства\t"
                    +this.year + "\tцена\t"+ this.price + "\tгабариты\t" + this.gabarit.width + "x"
                    + this.gabarit.height +"x"+ this.gabarit.depth);
        }
 
        static class Gabarit {
            float width, height, depth;
 
            public Gabarit(float width, float height, float depth) {
                this.width = width;
                this.height = height;
                this.depth = depth;
            }
        }
        static class Stat {
            public static int counter = 0; // счетчик и данные для вывода счетчика на дисплэй
            public static int Vtype = 0;
            public static ArrayList<Integer> arrayList = new ArrayList<>(); // динамический массив для накопления типов инструментов
            public Stat(){
            }
            public static void statdisp(){                                  // статитческий метод класса Stat для вывода
                                                                            // статистики по статистики по инструментам: количество объектов по типам
                System.out.println(Instrument.Stat.arrayList);              // для наглядности выводится массив содержащий все типы инструментов
 
                while (!arrayList.isEmpty()) {                              //первый цикл: пока массив не пустой делаем
                    if (counter!=0)                                         // проверяем, чтоб счетчик уже сработал
                    System.out.println("Инструментов типа: " + Vtype +
                            " в базе содержится: " + (counter - 1));         // выводим в консоль результаты подсчета по одному типу
                    Vtype = arrayList.get(0);                               // переменной Vtype присваиваем значение первого элемента массива
 
 
                    for (counter=1; arrayList.indexOf(Vtype)!=-1;counter=counter+1) {   // Второй цикл пока есть совпадения между Vtype и элементами массив
                                                                                        // выполняется цикл: счетчик добавляет еденицу
                        arrayList.remove(arrayList.indexOf(Vtype));                     // удаляет элемент совпавший с Vtype
                    }
                }
                System.out.println("Инструментов типа: " + Vtype + " в базе содержится: " + (counter - 1)); // выводим в консоль результаты подсчета по последнему элементу
            }
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2023, 09:34
Помогаю со студенческими работами здесь

Реализовать класс-контейнер для хранения набора объектов класса
Реализовать класс-контейнер для хранения набора объектов класса из предыдущей лабораторной работы. Объекты должны храниться в...

Составить описание и реализовать класс Vector для описания объектов - векторов, задаваемых координатами
Составить описание и реализовать класс Vector для описания объектов - векторов, задаваемых координатами в n-мерном пространстве. Обеспечить...

Определить класс матрицу. В класс включить два конструктора для определения матрицы по количеству элементов
Определить класс матрицу. В класс включить два конструктора для определения матрицы по количеству элементов и путем копирования другой...

Описать и реализовать класс Стек, моделирующий массивом стек, для хранения любых объектов
ПОЖАЛУЙСТА ПОМОГИТЕ РАЗОБРАТЬСЯ С ЗАДАЧЕЙ НА JAVA!!! только начинаю изучать этот язык. буду очень признательна за пояснение каждой...

Конвертация объектов к простым типам
Почему в Java конвертация объектов к простым типам (int, long, short, float, byte, double, char) происходит через неявное приведение к...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru