0 / 0 / 0
Регистрация: 21.08.2019
Сообщений: 3

Как привязать к одному объекту несколько других?

05.05.2021, 02:32. Показов 2782. Ответов 8

Студворк — интернет-сервис помощи студентам
Я начинаю осваивать джаву и у меня имеется задание, которое я не очень понимаю как сделать. Мне нужно сохранить в списке 5 объектов класса CarStorage и для каждого объекта CarStorage должно быть создано 5 объектов класса Car эти 5 объектов должны быть связанны со своим объектом CarStorage. Я не представляю как это сделать, прошу помогите с заданием и по возможности распишите подробно объяснение.
P.S Прилагаю код, который пока что написал(

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
package com.company;
import java.util.ArrayList;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Test TestList = new Test();
    }
}
class Test {
    Test() {
        int i=0;
        String name;
        int capacity;
        Scanner in = new Scanner(System.in);
        ArrayList<CarStorage> List = new ArrayList<>();
        while(true){
            capacity=in.nextInt();
            name=in.next();
            CarStorage Element = new CarStorage(name, capacity);
 
            List.add(i, Element);
            i++;
            if(i==5) break;
        }
    }
}
 
class CarStorage {
    int capacity;
    String name;
    Scanner in = new Scanner(System.in);
 
    public CarStorage(String name, int capacity){
        this.capacity=capacity;
        this.name=name;
    }
 
}
 
class Car {
String name;
int color;
String Made_by;
int price;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.05.2021, 02:32
Ответы с готовыми решениями:

Как присвоить несколько параметров одному объекту?
Возможно ли реализовать следующее: в базе данных у меня есть пациент, у которого есть основной диагноз и сопутствующий. Основной - один,...

Как привязать к одному js скрипту несколько select
Доброго времени суток, есть таблица: &lt;table name=&quot;TableCar&quot; align=&quot;center&quot;&gt; &lt;h3 align=&quot;center&quot;&gt;Учет...

Как к одному клиенту привязать несколько записей.
Здравствуйте. Только начинаю осваивать access и пытаюсь составить базу данных для своей работы (ветеринарный кабинет). Нужно к одному...

8
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
05.05.2021, 03:46
Лучший ответ Сообщение было отмечено iaalfarii12 как решение

Решение

Цитата Сообщение от iaalfarii12 Посмотреть сообщение
и по возможности распишите подробно объяснение.
Постарался минимально менять ваш код, думаю разберетесь и потом отрефакторите
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
public class Main {  
    public static void main(String args[]) {
        Test testList = new Test();
        for (CarStorage carStorage : testList.launch()) {
            System.out.println("\n" + carStorage.getName());
            for (Car car : carStorage.cars) {
                System.out.print(car.getName() + " ");
            }
        }
    }
}
 
class Test {
    public ArrayList<CarStorage> launch() {
        int i=0;
        String name;
        String made_by;
        int capacity;
        int color;
        int price;
        Scanner in = new Scanner(System.in);
        ArrayList<CarStorage> carStorages = new ArrayList<>();
        while(i<5){
            capacity=in.nextInt();
            name=in.next();
            CarStorage element = new CarStorage(name, capacity);
            carStorages.add(i, element);
            i++;
        }
        
        for (CarStorage cs : carStorages) {
            i=0;
            while(i<5){
                name=in.next();
                color=in.nextInt();
                made_by=in.next();
                price=in.nextInt();
                Car car = new Car(name, color, made_by, price);
                cs.cars.add(i, car);
                i++;
            }
        }
 
        return carStorages;
    }
}
 
class CarStorage {
    int capacity;
    String name;
    Scanner in = new Scanner(System.in); // ?
    ArrayList<Car> cars;
 
    public CarStorage(){}
    
    public CarStorage(String name, int capacity){
        this.capacity=capacity;
        this.name=name;
        this.cars = new ArrayList<>();
    }
    
    public void addCar(Car car) {
        this.cars.add(car);
    }
    
    public String getName() {
        return this.name;
    }
}
 
class Car extends CarStorage{
    String name;
    int color;
    String made_by;
    int price;
    
    public Car(String name, int color, String made_by, int price){
        this.name=name;
        this.color=color;
        this.made_by=made_by;
        this.price=price;
    }
    
    public String getName() {
        return this.name;
    }
}
1
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
05.05.2021, 03:51
Ну как-то так:
Кликните здесь для просмотра всего текста
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import java.awt.*;
import java.util.ArrayList;
 
abstract class Entity {
    private String name;
    private Color color;
    private String producingCountry;
    private int price;
 
    public Entity(String name, Color color, String producingCountry, int price) {
        this.name = name;
        this.color = color;
        this.producingCountry = producingCountry;
        this.price = price;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Color getColor() {
        return color;
    }
 
    public void setColor(Color color) {
        this.color = color;
    }
 
    public String getProducingCountry() {
        return producingCountry;
    }
 
    public void setProducingCountry(String producingCountry) {
        this.producingCountry = producingCountry;
    }
 
    public int getPrice() {
        return price;
    }
 
    public void setPrice(int price) {
        this.price = price;
    }
 
    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Entity{");
        sb.append("name='").append(name).append('\'');
        sb.append(", color=").append(color);
        sb.append(", producingCountry='").append(producingCountry).append('\'');
        sb.append(", price=").append(price);
        sb.append('}');
        return sb.toString();
    }
}
 
class Car extends Entity {
    public Car() {
        this("Lada Kalina", Color.ORANGE, "Rashka", -100500);
    }
 
    public Car(String name, Color color, String producingCountry, int price) {
        super(name, color, producingCountry, price);
    }
}
 
class CarStorage extends Entity {
    private Car[] cars;
 
    public CarStorage() {
        this("Dadya Wasya's garage", Color.GREEN, "Rashka", -100500);
    }
 
    public CarStorage(String name, Color color, String producingCountry, int price) {
        this(name, color, producingCountry, price, 5);
    }
 
    public CarStorage(String name, Color color, String producingCountry, int price, int size) {
        super(name, color, producingCountry, price);
        cars = new Car[5];
        for (int i = 0; i < size; ++i) {
            cars[i] = new Car();
        }
    }
 
    public void setCars(Car... cars) {
        this.cars = cars;
    }
 
    public Car[] getCars() {
        return cars;
    }
 
    public Car getCar(int index) {
        return cars[index];
    }
}
 
public class Main {
    public static void main(String[] args) {
        ArrayList<CarStorage> list = new ArrayList<>();
        for (int i = 0; i < 5; ++i) {
            list.add(new CarStorage());
        }
        for (CarStorage carStorage : list){
            System.out.println("carStorage " + carStorage.getName() + "contains such machines as:");
            for(Car car : carStorage.getCars()){
                System.out.println(car);
            }
        }
    }
}

Тут общий абстрактный класс сущностей использовал. Типо гараж и машина по сути вещи, которые имеют имя, стоимость, страну производства и т.д. Спрашивай, если что-то непонятно.
1
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
05.05.2021, 14:20
Лучший ответ Сообщение было отмечено iaalfarii12 как решение

Решение

Car.java
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
public class Car {
    private final String brand;
    private final String model;
 
    private CarStorage storage;
 
    public Car(String brand, String model) {
        this.brand = brand;
        this.model = model;
    }
 
    public void storeIn(CarStorage storage) {
        this.storage = storage;
    }
 
    public CarStorage getStorage() {
        return storage;
    }
 
    public String getBrand() {
        return brand;
    }
 
    public String getModel() {
        return model;
    }
 
    @Override
    public String toString() {
        return String.format(
                "[Brand: %s; Model: %s; Stores by address: %s]",
                brand, model, storage.getAddress()
        );
    }
}
CarStorage.java
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
public class CarStorage {
    private final String address;
    private final int capacity;
 
    private final List<Car> cars = new ArrayList<>();
 
    public CarStorage(String address, int capacity) {
        this.address = address;
        this.capacity = capacity;
    }
 
    public String getAddress() {
        return address;
    }
 
    public int getCapacity() {
        return capacity;
    }
 
    public boolean addCar(Car car) {
        if (cars.size() > capacity) {
            return false;
        }
        
        // вот в этой строчке выполняется привязка
        // теперь как CarStorage имеет ссылки на свои автомобили, так и сам автомобиль имеет ссылку на свой CarStorage
        car.storeIn(this);
        return cars.add(car);
    }
 
    public List<Car> getCars() {
        return cars;
    }
 
    @Override
    public String toString() {
        return String.format(
                "Storage\nAddress: %s\nCapacity: %d\nContains: %s\n",
                address, capacity, cars
        );
    }
}
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
    public static void main(String[] args) {
        List<CarStorage> storages = generateStorages(5);
        for (CarStorage storage : storages) {
            List<Car> carsForStorage = generateCars(5);
            for (Car car : carsForStorage) {
                storage.addCar(car);
            }
            System.out.println(storage);
        }
    }
 
    private static List<Car> generateCars(int size) {
        List<Car> cars = new ArrayList<>();
        for (int i = 0; i < size; i++) {
            cars.add(new Car("Brand #" + i, "Model #" + i));
        }
        return cars;
    }
 
    private static List<CarStorage> generateStorages(int size) {
        List<CarStorage> storages = new ArrayList<>();
        for (int i = 0; i < size; i++) {
            storages.add(new CarStorage("Storage address #" + i, 5));
        }
        return storages;
    }
Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Tavashi Посмотреть сообщение
class Car extends CarStorage
просто для себя вдумайся в эту строчку

0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
05.05.2021, 14:28

Не по теме:

Ev[G]eN, ну, все правильно - гараж порождает машины из него выезжающие!


1
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
05.05.2021, 18:38
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
просто для себя вдумайся в эту строчку
Да, верно. Забыл ее убрать.
iaalfarii12, нужен класс без расширения:
Java
1
class Car{
1
0 / 0 / 0
Регистрация: 21.08.2019
Сообщений: 3
09.05.2021, 10:32  [ТС]
Ev[G]eN, спасибо вам большое!! А еще маленький вопрос а как можно обратиться к определенной машине, на определенном складе? Допустим мне нужно узнать модель третьей машины на третьем складе?
0
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
09.05.2021, 11:54
Цитата Сообщение от iaalfarii12 Посмотреть сообщение
мне нужно узнать модель третьей машины на третьем складе
Java
1
storages.get(2).getCars().get(2).getModel()
1
0 / 0 / 0
Регистрация: 21.08.2019
Сообщений: 3
09.05.2021, 13:42  [ТС]
Ev[G]eN, Спасибо!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.05.2021, 13:42
Помогаю со студенческими работами здесь

К одному BindingNavigator привязать несколько BindingSource
Здравствуйте, помогите пожалуйста, мне нужно к одному BindingNavigator привязать несколько BindingSource. Везде перерыл нигде путного не...

Как привязать к объекту координты?
Ну, вот я имею ввиду, что если у меня есть объект (не в контексте ООП, а в прямом смысле), например группа из четырех звездочек...

Как привязать текст к объекту в OpenGl
Можете подсказать как привязать текст, например :&quot;Земля&quot; в модели солнечная система к объекту сфера.Чтоб при вращении объекта по заданой...

Как правильно привязать меню (QMenu) к объекту ?
Добрый день. Извиняюсь, если немного сумбурно. Пытаюсь разобраться с созданием QMenu. Делаю объекты на QGraphicsScene, они состоят из...

Как привязать ссылку к объекту (див, надпись и т.д.) ?
Как привязать ссылку к объекту (див, надпись и т.д.) ? дан див, по нажатию на него нужно перейти на другую страницу, как это сделать...


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

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

Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru