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 шт):
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