// Better version of BMI program that utilizes return values for // proper information flow. import java.util.*; public class GoodBMI { public static void main(String[] args) { Scanner console = new Scanner(System.in); printIntro(); double bmi = reportBmi(console); String status = getStatus(bmi); System.out.println("Person's BMI: " + bmi); System.out.println("Person's BMI status: " + status); } public static void printIntro() { System.out.println("This program reads data for one"); System.out.println("person and computes his/her body"); System.out.println("mass index and weight status."); System.out.println(); } public static double reportBmi(Scanner console) { double height = getHeight(console); double weight = getWeight(console); double bmi = getBmi(height, weight); return bmi; } public static double getHeight(Scanner console) { System.out.println("Enter next person's information:"); System.out.print("height (in inches)? "); double height = console.nextDouble(); return height; } public static double getWeight(Scanner console) { System.out.print("weight (in pounds)? "); double weight = console.nextDouble(); return weight; } public static String getStatus(double bmi) { String status; if (bmi < 18.5) { status = "underweight"; } else if (bmi < 25) { status = "normal"; } else if (bmi < 30) { status = "overweight"; } else { // bmi >= 30 status = "obese"; } return status; } public static double getBmi(double height, double weight) { double bmi = weight / (height * height) * 703; return bmi; } }