🗒 Задача¶
Программа тренировок разбивает упражнения на две группы: упражнения для мышц рук/пресса и ног/спины. Она рекомендует делать упражнения на каждую группу мышц через день. Пользователь начал занятия с рук и пресса. Напиши программу, которая будет сообщать, какие упражнения нужно выполнить сегодня.
Предположим, что сегодня 5 день тренировок. В первый день выполнялись упражнения для рук и пресса. Выведи сообщение в виде нескольких красивых ровных строк.
Вывод должен быть таким:
Упражнения для рук: true
Упражнения для ног: false
Упражнения для спины: false
Упражнения для пресса: true
-
все сообщение должно печататься в одном println();
-
при изменении значения переменной дня тренировки на 1 день вперед, вывод должен меняться.
❌ Ошибки¶
-
делают две группы под каждые группы мышц и раздельно для них вычисляют четность — рекомендовать делать единый флаг
-
некорректный нейминг Boolean флага
-
более корректно находить четное число, сравнивая с нулем, а не с единицей
✏️ Комментарии¶
Нужно немного изменить подход) Посмотри в сторону определения четности дня. Это значение можно уже поместить в отдельный флаг и затем применить к каждой части тела напрямую или с отрицанием (инвертируя значение через символ `!`)
Все окей! На будущее — более распространенная практика находить четность числа и сравнивать именно с 0.
Верный ход, но давай оптимизируем. Предлагаю находить четность (и только ее) числа и сохранять в отдельный Boolean "флаг", например isEven. И применять его уже при выводе “как есть” или с отрицанием (инвертируя значение).
Флаг - можно сказать сленговое выражение "переключателя". для отметки или указания определенного состояния. по аналогии с флагом, который поднимается или опускается для обозначения определенной ситуации, переменная может принимать одно из двух состояний.
Правильный ход мыслей, но лучше кое что оптимизировать)
Не соблюдается принцип [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself).
Лучше вынести нахождение четности (только четности) числа в отдельный флаг и применять его уже при выводе напрямую или с отрицанием (инвертируя).
Верная логика, но давай чтобы избежать условия и дублирования кода оптимизируем.
Нужно объявить для каждой части тела переменные (это будет актуально в том числе и для поддержки и расширения функционала). Нахождение четности вынесем в отдельный флаг и будем применять этот флаг непосредственно к частям тела
Так как частей тела может быть больше, я бы не ограничивался ими в переменных.
Достаточно одной переменной для нахождения четности числа и далее ее применять. типа того isEven / !isEven
Boolean переменные принято называть isSomeSituation (не обязательно, но так код легче читается). Давай назовем isEvenDay
Однобуквенные переменные - зло, они уместны только в циклах в качестве интерируемой переменной, в остальном - теряется контекст в месте использования переменной. Давай дадим понятное название