Ошибка при расчете средней температуру массива пациентов, температуру пациентов и количество выздоровевших

package practice.hospital;

public class Hospital {
    public static float[] generatePatientsTemperatures(int patientsCount) {
        float[] patientsTemperature = new float[patientsCount];
        for (int i = 0; i < patientsCount; i++) {
            patientsTemperature[i] = Math.round(((float) (Math.random() * 8) + 32) * 100) / (float) 100.0;

        }
        return patientsTemperature;
    }

    public static String getReport(float[] temperatureData) {
        int count  = 0;
        int healthy = 0;
        String patients = "";
        float temp = 0;
        double middleTemperature = 0;
        for (int i = 0; i < temperatureData.length; i++) {
            patients += temperatureData[i] + " ";
            temp += temperatureData[i];
            if (temperatureData[i] >= 36.2 && temperatureData[i] <= 36.9) {
                healthy +=1;
                count+=1;
            }else {
                count+=1;
            }
        }

        double d = temp/count;
        middleTemperature = Math.rint(100.0*d)/100.0;

        String report =
                "Температуры пациентов: " + patients +

                        "\nСредняя температура: " + middleTemperature +

                        "\nКоличество здоровых: " + healthy;


        return report;
    }
}

При проведении теста через Maven пишет следующее:

[INFO] -------------------------------------------------------
[INFO] Running HospitalTest
[ERROR] Tests run: 9, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.975 s  expected:  but was: 
    at HospitalTest.testGetReport(HospitalTest.java:60)

введите сюда описание изображения

А при использовании class HospitalTest:

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.util.Locale;
import java.util.stream.IntStream;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import practice.hospital.Hospital;

@DisplayName("Операции с массивами - получение среднего значения")
class HospitalTest {

    private static final float[] testHospitalData = new float[]{
        32.1F, 33.1F, 32.5F, 33.5F, 34.5F, 36.5F, 38.5F, 39.5F, 33.3F, 32.7F,
        36.9F, 36.5F, 34.3F, 37.5F, 32.5F, 32.5F, 32.4F, 34.5F, 35.4F, 32.5F,
        34.5F, 39.4F, 32.5F, 36.5F, 36.4F, 39.6F, 37.5F, 32.5F, 37.5F, 39.4F
    };

    @BeforeAll
    static void setUp() {
        Locale.setDefault(Locale.ENGLISH);
    }

    @Test
    @DisplayName("Генерируемый массив не содержит температуры за рамками заданных предельных значений")
    void testCollectDataContainsCorrectEntries() {
        float[] testHospitalData = Hospital.generatePatientsTemperatures(100);
        long amountCorrectTemperatures = IntStream.range(0, testHospitalData.length)
            .mapToDouble(i -> testHospitalData[i])
            .filter(t -> t >= 32.)
            .filter(t -> t <= 40.)
            .count();

        assertEquals(100L, amountCorrectTemperatures,
            "Температуры выходят за предельные значения, actual - количество температур в требуемых диапазонах");
    }

    @DisplayName("Массив температур содержит переданное количество значений температур")
    @ParameterizedTest
    @ValueSource(ints = {1, 3, 5, 7, 10, 30, 500})
    void testTemperatureArrayLength(int countPatients) {
        int actual = Hospital.generatePatientsTemperatures(countPatients).length;
        assertEquals(countPatients, actual,
            String.format("Массив содержит %s элементов, а ожидается %s%n", actual, countPatients));
    }

    @Test
    @DisplayName("Метод корректно считает среднюю температуру и количество здоровых пациентов")
    void testGetReport() {
        String temperatures = String.join(" ",
            IntStream.range(0, testHospitalData.length)
                .mapToObj(i -> String.valueOf(testHospitalData[i])).toArray(String[]::new));

        String expected = "Температуры пациентов: " + temperatures + System.lineSeparator() +
                          "Средняя температура: 35.23" + System.lineSeparator() +
                          "Количество здоровых: 5";

        assertEquals(expected, Hospital.getReport(testHospitalData)
                .replaceAll("\r\n", "\n")
                .replaceAll("\n", System.lineSeparator()),
            "Проверьте формат вывода, округление средней температуры и количество здоровых пациентов");
    }
}

Получается следующий результат:

введите сюда описание изображения

При этом класс Main не меняется.

package practice.hospital;

public class Main {
    public static void main(String[] args) {

        // используя данный метод, вы можете использовать ваши методы, и проверить их работу на разных
        // значений для проверки и отладки

        float[] temperatureData = Hospital.generatePatientsTemperatures(30);
        System.out.println(Hospital.getReport(temperatureData));

        //Пример вывода в консоль:
        //Температуры пациентов: 36.7 38.9 34.7
        //Средняя температура: 36.76
        //Количество здоровых: 1


    }
}

Ответы (0 шт):