Аквариум
Том подарил своему брату Алексу на день рождения аквариум с рыбками. Через
несколько дней Том сам заинтересовался рыбками и купил себе аквариум с рыбками.
Но у Тома не было достаточно свободного времени, чтобы ухаживать за рыбками.
Поэтому Том решил создать программу, которая будет записывать каждый процесс,
происходящий в аквариуме, и обратился к вам за помощью. Ваша задача - помочь
Тому создать программу.
Требования к программе:
- Все значения должны определяться случайным образом.(Random)
- Следует использовать коллекции.(Collections)
- Каждая рыба должна быть в отдельном потоке.(Thread)
- Отчет о каждом процессе должен отображаться в консоли.(Console)
Примечание:
- На момент написания в аквариуме было N самцов и M самок. Значения N и M
также определяются методом Random.
- У каждой рыбы своя продолжительность жизни, и ее длина определяется
методом Random.
- Если самцы и самки встречаются, они должны размножаться. Пол каждой
новорожденной рыбы определяется методом Random
Что у меня получилось сделать:
1. - На момент написания в аквариуме было N самцов и M самок. Значения N и M
также определяются методом Random.
2. Сам того не знаю сделал фичу, покупкe, где поток сам докупает рыбок, если есть место в аквариуме
Что у меня не получается:
1. - У каждой рыбы своя продолжительность жизни, и ее длина определяется
методом Random.
2. - Если самцы и самки встречаются, они должны размножаться. Пол каждой
новорожденной рыбы определяется методом Random
3. - Каждая рыба должна быть в отдельном потоке.(Thread)
Lightselect
41 уровень
Помогите пожалуйста решить задачу с рыбками
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Alexander Komlichenko
5 февраля 2023, 23:13
То что приходит в голову - у вас должен быть List<Thread>.
При создании нити - создается объект-рыбка.
В классе рыбка:
1) boolean\String\int (как пожелаете) sex = ((int)Math.random*2) == 1 ? Male : Female.
2) продолжительность жизни выбирайте сами.
3) так же запустить отсчет жизни birthTime = new Date.get time;
4) потом сделать метод встреча, который будет брать из списка рандомную рубку из списка и проверять пол, если он != полу этой рыбки то запускаем новую нить.
В методе run:
1) Создайте переменную long timeToDie = new Date.get time;
2) Переменную счетчик = 0;
3) Создайте цикл while (timeToDie - birthTime < время_жизни)
3.1) if(counter == x) fish.meet();
3.2) Thread.sleep(маленький промежуток времени)
3.3) timeToDie = new Date.get time;
3.4) counter++;
Может и полная фигня мой вариант, но это то что пришло в голову)
+1
Lightselect Маркетолог
6 февраля 2023, 10:06
Частично понятно. Блин с одной стороны знаешь че делаеть,а с дргой хрень какая то получается .....
2 дня уже мудохаюсь с этой задачей
0