import java.util.Scanner;
public class BMICalculatorArray {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter number of users: ");
int n = sc.nextInt();
String[] name = new String[n];
int[] age = new int[n];
double[] weight = new double[n];
double[] height = new double[n];
double[] bmi = new double[n];
String[] category = new String[n];
int aboveNormalCount = 0;
double normalSum = 0, obeseSum = 0;
int normalCount = 0, obeseCount = 0;
for (int i = 0; i < n; i++) {
System.out.println("\nUser " + (i + 1));
System.out.print("Name: ");
name[i] = sc.next();
System.out.print("Age: ");
age[i] = sc.nextInt();
System.out.print("Weight (kg): ");
weight[i] = sc.nextDouble();
System.out.print("Height (cm): ");
height[i] = sc.nextDouble();
double hMeter = height[i] / 100;
bmi[i] = weight[i] / (hMeter * hMeter);
// BMI Category
if (bmi[i] >= 18.5 && bmi[i] <= 24.9) {
category[i] = "Normal";
normalSum += bmi[i];
normalCount++;
}
else if (bmi[i] >= 25 && bmi[i] <= 29.9) {
category[i] = "Overweight";
aboveNormalCount++;
}
else if (bmi[i] >= 30 && bmi[i] <= 34.9) {
category[i] = "Obese";
obeseSum += bmi[i];
obeseCount++;
aboveNormalCount++;
}
else if (bmi[i] >= 35 && bmi[i] <= 39.9) {
category[i] = "Severely Obese";
obeseSum += bmi[i];
obeseCount++;
aboveNormalCount++;
}
else {
category[i] = "Morbidly Obese";
obeseSum += bmi[i];
obeseCount++;
aboveNormalCount++;
}
}
// Output
System.out.println("\nName\tAge\tWeight\tHeight\tBMI\tCategory");
for (int i = 0; i < n; i++) {
System.out.printf("%s\t%d\t%.1f\t%.1f\t%.2f\t%s\n",
name[i], age[i], weight[i], height[i], bmi[i], category[i]);
}
if (normalCount > 0)
System.out.println("\nAverage BMI for Normal category = " + (normalSum / normalCount));
else
System.out.println("\nNo Normal category users");
if (obeseCount > 0)
System.out.println("Average BMI for Obesity category = " + (obeseSum / obeseCount));
else
System.out.println("No Obesity category users");
System.out.println("Number of users above normal BMI = " + aboveNormalCount);
sc.close();
}
}