Есть задача на тему аэробика
Медики рекомендуют 30 минут занятий аэробики пять дней в неделю (здесь было написано: с понедельника по пунктам, но в целом мой план провалился) для поддержания своего кардиоваскулярного здоровья. Более того, хотя бы 40 минут три раза в неделю для поддержания низкого кровяного давления. Ваша задача: написать программу, которая запрашивает у пользователя количество минут, потраченных последние семь дней на упражнения, и соответственно, репорт следующее:
-было достаточно времени уделено упражнениям для кардиоваскулярного здоровья, и, если нет, выводит: сколько дней правильной жизни (с занятиями более 30 минут) не хватает для рекомендованного графика.
-было достаточно упражнений для уменьшения кровяного давления и холестерина, и, если нет, выводит: сколько дней пользователь не дотянул с занятиями по 40 минут в день.

Я пытался находить сумму и по сумме как-то выводить, но примером как на фото оно отказывается работать, не правильное решение, всё через if делал(7 ифов с проверками типо if(sum < 30) и так 30 увеличивал все больше 60, 90, 120 и т.д.) подскажите как его можно решить? Начинающий только в программировании, cутки сижу думаю, а не знаю как(( Что сделал я: Я создал 7 переменных, потом нашел суму, и уже тогда в двух методах делал подобное
int CARDIO = 30;
if(sumWeek < CARDIO ){
println("\tCardiovacular health:");
println("You needed to train hard for at least 7 more day(s) a week!");
}
else if(sumWeek < CARDIO * 2){
println("\tCardiovacular health:");
println("You needed to train hard for at least 6 more day(s) a week!");
}
else if(sumWeek < CARDIO * 3){
println("\tCardiovacular health:");
println("You needed to train hard for at least 5 more day(s) a week!");
}
else if(sumWeek < CARDIO * 4){
println("\tCardiovacular health:");
println("You needed to train hard for at least 4 more day(s) a week!");
}
else if(sumWeek < CARDIO * 5){
println("\tCardiovacular health:");
println("You needed to train hard for at least 3 more day(s) a week!");
}
else if(sumWeek < CARDIO * 6){
println("\tCardiovacular health:");
println("You needed to train hard for at least 2 more day(s) a week!");
}
else if(sumWeek < CARDIO * 7){
println("\tCardiovacular health:");
println("You needed to train hard for at least 1 more day(s) a week!");
}
else{
println("\tCardiovacular health:");
println("Great job! You've done enough exercise for cardiovacular health.");
}
Знаю что бред но как сделать ума сейчас не приложу( Есть кто может помочь. Очень прошу помощи что бы как-то хоть просветили с такой задачей...
Ответы (1 шт):
Прежде чем писать код подумайте что от вас хотят. Прочитайте 100 раз текст задачи, упростите его, разложите на шаги. Задача программиста заключается в том, чтобы перевести поставленную задачу в алгоритм и перенести алгоритм в код.
import java.util.Scanner;
public class SomeClass {
/**
* Медики рекомендуют 30 минут занятий аэробики пять дней в неделю для поддержания своего кардиоваскулярного здоровья.
* Более того, хотя бы 40 минут три раза в неделю для поддержания низкого кровяного давления.
* <p>
* Ваша задача: написать программу, которая запрашивает у пользователя количество минут,
* потраченных последние семь дней на упражнения, и соответственно, репорт следующее:
* <p>
* Вывод 1:
* -было достаточно времени уделено упражнениям для кардиоваскулярного здоровья,
* - если нет: сколько дней правильной жизни (с занятиями более 30 минут) не хватает для рекомендованного графика.
* <p>
* Вывод 2:
* -было достаточно упражнений для уменьшения кровяного давления и холестерина,
* - если нет: сколько дней пользователь не дотянул с занятиями по 40 минут в день.
* <p>
* Шаги:
* - получить от пользователя 1 число (количество минут, потраченных последние семь дней на упражнения)
* - получить информацию о статусе "упражнений для кардиоваскулярного здоровья" (статус1)
* - получить информацию о статусе "упражнений для уменьшения кровяного давления и холестерина" (статус2)
* <p>
* - вывести статус1 на экран
* - вывести статус2 на экран
*/
public static void main(String[] args) {
int sumTimeFromUser = getSumTimeFromUser();
String cardiovascularHealthStatus = getCardiovascularHealthStatus(sumTimeFromUser);
String bloodPressureAndCholesterolStatus = getBloodPressureAndCholesterolStatus(sumTimeFromUser);
System.out.println("--- Отчет по упражнениям для кардиоваскулярного здоровья ---");
System.out.println(cardiovascularHealthStatus);
System.out.println("--- Отчет по упражнениям для уменьшения кровяного давления и холестерина ---");
System.out.println(bloodPressureAndCholesterolStatus);
}
private static int getSumTimeFromUser() {
try (Scanner scanner = new Scanner(System.in)) {
return scanner.nextInt();
}
}
/**
* Возвращает статус по тренировкам по переданному количеству минут, затраченных на тренировки в течении недели.
* Если суммарное время больше или равно 150 минут (норма 5 дней по 30 минут) - статус положительный,
* В противном случае указывает сколько дней необходимо заниматься (где время тренировки строго больше 30 минут)
* для следования рекомендованному графику
*
* Медики рекомендуют 30 минут занятий аэробики пять дней в неделю для поддержания своего кардиоваскулярного здоровья.
* - было достаточно времени уделено упражнениям для кардиоваскулярного здоровья,
* - если нет: сколько дней правильной жизни (с занятиями более 30 минут) не хватает для рекомендованного графика.
*/
private static String getCardiovascularHealthStatus(int trainingTime) {
int durationOfWorkoutInMinutes = 30;
int norma = durationOfWorkoutInMinutes * 5;
int leftTrainingDays = (norma - trainingTime) / durationOfWorkoutInMinutes;
if (leftTrainingDays > 0) {
String messagePattern = "%s дней правильной жизни (с занятиями более 30 минут) не хватает для рекомендованного графика";
return String.format(messagePattern, leftTrainingDays);
} else {
return "Было достаточно времени уделено упражнениям для кардиоваскулярного здоровья";
}
}
private static String getBloodPressureAndCholesterolStatus(int trainingTime) {
int durationOfWorkoutInMinutes = 40;
int norma = durationOfWorkoutInMinutes * 5;
int leftTrainingDays = (norma - trainingTime) / durationOfWorkoutInMinutes;
if (leftTrainingDays > 0) {
String messagePattern = "%s дней правильной жизни (с занятиями более 40 минут) не хватает для рекомендованного графика";
return String.format(messagePattern, leftTrainingDays);
} else {
return "Было достаточно упражнений для уменьшения кровяного давления и холестерина";
}
}
}