Java - вывод средней температуры / пациентов

Ожидаемый вывод: Температуры пациентов: 32.1 33.1 32.5 33.5 34.5 36.5 38.5 39.5 33.3 32.7 36.9 36.5 34.3 37.5 32.5 32.5 32.4 34.5 35.4 32.5 34.5 39.4 32.5 36.5 36.4 39.6 37.5 32.5 37.5 39.4 Средняя температура: 35.23 Количество здоровых: 5

Мой вывод: Температуры пациентов: 32.133.132.533.534.536.538.539.533.332.736.936.534.337.532.532.532.434.535.432.534.539.432.536.536.439.637.532.537.539.4 Средняя температура: 35.23333346048991 Количество здоровых: 5 Вопрос - почему он не считывает температуру раздельно ? хотя стоит пробел в строке... и как преобразовать среднею температуру с плав.точкой до двух символов ?

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;
            System.out.print(patientsTemperature[i]);
        }

        return patientsTemperature;
    }

    public static String getReport(float[] temperatureData) {
    /*
    TODO: Напишите код, который выводит среднюю температуру по больнице,количество здоровых пациентов,
        а также температуры всех пациентов.
        Округлите среднюю температуру с помощью Math.round до 2 знаков после запятой,
        а температуры каждого пациента до 1 знака после запятой
    */
        StringBuilder patientstemp = new StringBuilder(" ");
        for (float datum : temperatureData) {
            patientstemp.append(datum);
        }
        
        int counthealthy = 0;
        for (float temperatureDatum : temperatureData) {
            if (temperatureDatum >= 36.2 && temperatureDatum <= 37) {
                counthealthy++;
            }
        }

        double result = 0;
        for (double at : temperatureData) {
            result += at;
        }
        
        return "Температуры пациентов: " + patientstemp +
                "\nСредняя температура: " + Math.round(result / temperatureData.length) +
                "\nКоличество здоровых: " + counthealthy;
    }

}

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

Автор решения: ARTHURFIRE

Up: Данный код сокращает вывод до 2 символов с плав точкой. вывод в переменной - middleTemperature

int count  = 0;
    float temp = 0;
    double middleTemperature = 0;
    int counthealthy = 0;
    for (int h = 0; h < temperatureData.length; h++) {
        temp+=temperatureData[h];
        if (temperatureData[h] >= 36.2 && temperatureData[h] <= 37) {
            count+=1;
         }else {
            count+=1;
        }
    }

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

// "\nСредняя температура: " + middleTemperature
→ Ссылка