Есть задача на тему аэробика

Медики рекомендуют 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 шт):

Автор решения: bio-engineer

Прежде чем писать код подумайте что от вас хотят. Прочитайте 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 "Было достаточно упражнений для уменьшения кровяного давления и холестерина";
    }
}

}

→ Ссылка