Вывести среднюю температуру массива пациентов, температуру пациентов и количество выздоровевших
public class Hospital {
public static float[] generatePatientsTemperatures(int patientsCount) {
//TODO: напишите метод генерации массива температур пациентов
int[] patients = new int[10];
float[] patientsTemp = new float;
for (int i = 0; i < patients.length; i++) {
double patientsTemp = ((Math.random() * Math.round((40 - 32) + 1)) + 32);
patients[i] = patientsTemp;
return new float[0];
}
public static String getReport ( float[] temperatureData){
/*
TODO: Напишите код, который выводит среднюю температуру по больнице,количество здоровых пациентов,
а также температуры всех пациентов.
*/
double average = 0;
if (patientsTemp.length>0) {
double sum = 0;
for (int i = 0; i < patientsTemp.length; i++) {
sum += patientsTemp[i];
}
average = sum/ patientsTemp.length;
}
int patientsHealth = 0;
double temp =0;
if (36.2 < temp < 36.9) {
patientsHealth++;
}
String report =
"Температуры пациентов: " +
patientsTemp +
"\nСредняя температура: " +
average +
"\nКоличество здоровых: " +
patientsHealth;
return report;
}
}
}
public class Main {
public static void main(String[] args) {
float[] temperatureData = Hospital.generatePatientsTemperatures(0);
System.out.println(Hospital.getReport(temperatureData));
//Пример вывода в консоль:
//Температуры пациентов: 36.7 38.9 34.7
//Средняя температура: 36.76
//Количество здоровых: 1
//Округлите среднюю температуру с помощью Math.round до 2 знаков после запятой,
//а температуры каждого пациента до 1 знака после запятой
}
}
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Вы все делаете настолько сложно и допускаете настолько много ошибок, что ваш код даже от компиляции очень далек, а не то что от корректного выполнения. Принцип kiss никто не отменял, все должно быть как можно проще:
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Random;
import java.util.stream.Collectors;
public class Hospital {
private final static Random RND = new Random();
private final static DecimalFormat FORMATTER_1 = new DecimalFormat("#0.0");
private final static DecimalFormat FORMATTER_2 = new DecimalFormat("#0.00");
private final static double MIN_TEMP = 32;
private final static double MAX_TEMP = 40;
private final static double MIN_HEALTH_TEMP = 36.2;
private final static double MAX_HEALTH_TEMP = 36.9;
public static double[] generatePatientsTemperatures(int patientsCount) {
return RND.doubles(patientsCount, MIN_TEMP, MAX_TEMP).toArray();
}
public static String getReport(double[] temperatureData) {
double avg = Arrays.stream(temperatureData).average().getAsDouble();
long patientsHealth = Arrays.stream(temperatureData)
.filter(temp -> MIN_HEALTH_TEMP < temp && temp < MAX_HEALTH_TEMP).count();
return String.join(" ",
"Температуры пациентов:", printDouble(FORMATTER_1, temperatureData),
"\nСредняя температура:", FORMATTER_2.format(avg),
"\nКоличество здоровых:", String.valueOf(patientsHealth)
);
}
private static String printDouble(DecimalFormat formatter, double ... args) {
return Arrays.stream(args).mapToObj(formatter::format).collect(Collectors.joining("; "));
}
public static void main(String[] args) {
System.out.println(getReport(generatePatientsTemperatures(10)));
}
}