package com.javarush.task.pro.task12.task1226;
/*
Бой гладиаторов
*/
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
public class Solution {
public static void main(String[] args) {
Robot amigoRobot = new Robot(Arrays.asList(null, new Core(1), new Core(2), null,
new Core(4), new Core(5), null, new Core(7), null, new Core(9)));
Robot diegoRobot = new Robot(Arrays.asList(new Core(0), null, null, new Core(3), null,
new Core(5), new Core(6), new Core(7), null, null));
fixRobot(amigoRobot);
fixRobot(diegoRobot);
printRobot(amigoRobot);
System.out.println();
printRobot(diegoRobot);
}
public static void printRobot(Robot robot) {
robot.getCores().forEach(System.out::println);
}
public static void fixRobot(Robot robot) {
int coreCount = 0;
List<Core> cores = robot.getCores();
for (int i = 0; i < cores.size(); i++) {
Core core = cores.get(i);
if (Objects.isNull(core)) {
cores.set(i, new Core(coreCount));
}
coreCount++;
}
}
}ivan
40 уровень
напишите комментарий каждой строки метода fixRobot. кто что делает
Решен
Комментарии (13)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Alexander Komlichenko
3 февраля 2023, 17:48
14-18 создаются 2 робота, с разным количеством ядер(Core)
20-21 роботов отправляют на починку
23-25 использование метода для вывода
28-29 метод вывода в консоль
32+ метод починки робота, который идет по всем 10ядрам, и там где ядро == null создает новое.
+1
ivan дворник
3 февраля 2023, 18:06
могли бы расписать подробно вот этот кусок кода? второй день задачу разбираю (возможно, вам нужно открыть эту задачу в javarush. но я хорошо понял логику кода, поэтому в объяснении не нужно глубоко уходить в другие классы - объясните только этот кусок кода.
проще говоря - опишите также ясно как вы описали остальные строки)
0
Alexander Komlichenko
3 февраля 2023, 18:22
1 - это метод, который принимает в качестве параметра - робота
2 - задается переменная счетчик
4 - создается список из ядер которые взяты у робота которого передали как параметр в 1 строке, у него же вызывается метод getCores, который возвращает список ядер
5 - создается цикл, который проходит по всей длине списка cores
6 - создается ссылка на объект ядро под индексом i из списка cores
7 - если объект ядро == null
8 - в список cores устанавливается новое значение по индексу i новое ядро с параметром coreCount
10 - происходит итерация переменной счетчика coreCount
Но как мне кажется, можно обойтись без coreCount, т.к. i имеет такие же значения.
cores.set(i, new Core(i));
+4
ivan дворник
3 февраля 2023, 18:31
спасибо вам большое. все очень понятно.
какой совет могли бы дать в написании сложных логических конструкций (наподобие этой)? совет как их писать
0
ivan дворник
3 февраля 2023, 18:57
а почему у нас в строке 6 пишем Core core = cores.get(i);? почему именно Core? потому что после знака равно у нас идет cores.get(i), а cores ссылается на robot.getCores(), в котором List<Core> имеет тип Core? я правильно понял?
0
Alexander Komlichenko
3 февраля 2023, 18:59
Просто пишите код)
Как личный пример, было задание, где я выдал метод в 80 строк кода, там было много if-else. Код работал - я доволен. А потом присмотрелся, и сократил все до 25 строк и все работало так же)
Готовьтесь к тому, что это будет тяжело эмоционально потому что есть моменты где все понятно и ты думаешь - "Я гений!" и все легко идет и вы довольны. А следующий урок - все мимо, и посещают мысли "А смогу ли я...Может это не мое...".
Самое главное пробуйте решить сами, если не получается, смотрите комментарии-подсказки к задаче (никогда не обращайте внимание на тех кто "сделал задание за 2-60минут, все так просто") и просто привыкайте к программированию)
+1
ivan дворник
3 февраля 2023, 19:01
совет будто мне в голову залезли. так и делаю. рад что я на таком же пути что и человек который так хорошо разбирается в java)
0
ivan дворник
3 февраля 2023, 19:02
ответьте на мой вопрос который выше пожалуйста
0
Alexander Komlichenko
3 февраля 2023, 19:08
Core - это тоже класс. Т.е. у вас есть Класс Robot внутри которого содержится список элементов класса Core. метод класса Robot возвращает список этих объектов Core.
Т.е. вы создаете новую ссылку core которая начинает ссылаться на объект списка, который содержится в объекте имя_робота.
Создавая список вы указываете что там будет храниться в <> (это дженерик, дальше будет изучаться)
List<Core> - список ядер
List<Robot> - список роботов
List<Solution> - список объектов солюшн
+2
Alexander Komlichenko
3 февраля 2023, 19:12
Я еще плох в java) У меня много пробелов, но медленно я развиваюсь в этом =) Сейчас делаю 1 задачу в день, а дальше читаю книжки + помогаю в этом разделе (тем самым закрепляю свои знания)
+1
ivan дворник
3 февраля 2023, 19:22
какие книжки посоветуете? какие сами читаете?
0
Alexander Komlichenko
3 февраля 2023, 19:31
Начинал c Headfirst не пошла)
Сейчас дочитываю Java. Руководство для начинающих (Шилдт 2019).
Дальше пойду в Java. Полное руководство (Шилдт 2018).
Рекомендовать не могу, сам еще мало прочитал, но думаю любое чтение полезно для сортировки знаний в голове)
+1
ivan дворник
5 февраля 2023, 13:03
это да
спасибо❤️
0