72.2k views
5 votes
In this exercise, you’ll design a "starter" HealthProfile class for a person. The class attributes should include the person’s first name, last name, gender, date of birth (consisting of separate attributes for the month, day and year of birth), height (in inches) and weight (in pounds). Your class should have a constructor that receives this data. For each attribute, provide setters and getters.The class should include methods that calculate and return the user’s age in years, maximum heart rate and target heart rate range, and body mass index (BMI). Write a Java application that prompts for the person’s information, instantiates an object of class HealthProfile for that person and prints the information from that object—including the person’s first name, last name, gender, date of birth, height and weight—then calculates and prints the person’s age in years, BMI, maximum heart rate and target-heart-rate range. It should also display the BMI values chart.

1 Answer

2 votes

Answer:

package healthcare;

import java.util.Calendar;

public class HealthProfile {

private String firstName;

private String lastName;

private char gender;

private int day;

private int month;

private int year;

private double height;

private double weight;

public HealthProfile(String firstName, String lastName, char gender, int day, int month, int year, double height,

double weight) {

super();

this.firstName = firstName;

this.lastName = lastName;

this.gender = gender;

this.day = day;

this.month = month;

this.year = year;

this.height = height;

this.weight = weight;

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

public char getGender() {

return gender;

}

public void setGender(char gender) {

this.gender = gender;

}

public int getDay() {

return day;

}

public void setDay(int day) {

this.day = day;

}

public int getMonth() {

return month;

}

public void setMonth(int month) {

this.month = month;

}

public int getYear() {

return year;

}

public void setYear(int year) {

this.year = year;

}

public double getHeight() {

return height;

}

public void setHeight(double height) {

this.height = height;

}

public double getWeight() {

return weight;

}

public void setWeight(double weight) {

this.weight = weight;

}

public int calculateAge() {

Calendar dateOfBirth = Calendar.getInstance();

dateOfBirth.set(year, month, day);

Calendar now = Calendar.getInstance();

return now.get(Calendar.YEAR) - dateOfBirth.get(Calendar.YEAR);

}

public int maximumHeartRate() {

return 220 - calculateAge();

}

public double[] targetHeartRateRange() {

double[] range = new double[2];

// Calculate Stating range(50 % of maximumHeartRate)

range[0] = 0.5 * maximumHeartRate();

// Calculate End range(85 % of maximumHeartRate)

range[1] = 0.85 * maximumHeartRate();

return range;

}

public double calculateBMI() {

return (weight * 703)/(height * height);

}

public String getBMIValue()

{

double bmi=calculateBMI();

if(bmi < 18.5)

{

return "Underweight";

}

else if (bmi>18.5 && bmi<24.9)

{

return "Normal";

}

else if (bmi>25 && bmi<29.9)

{

return "Normal";

}

else if (bmi>=30)

{

return "Obese";

}

return "DafultValue"; //you can give any default value of your choice here if no condition meets the given criteria

}

@Override

public String toString() {

return "HealthProfile [firstName=" + firstName + ", lastName=" + lastName + ", gender=" + gender + ", Date Of Birth="

+ day + "-" + month + "-" + year + ", height=" + height + ", weight=" + weight + "]";

}

}

package healthcare;

import java.util.Scanner;

public class TestHealthCare {

private static Scanner sc;

public static void main(String[] args) {

sc = new Scanner(System.in);

System.out.println("Please enter following details of the Patient");

System.out.println("First Name");

String firstName=sc.nextLine();

System.out.println("Last Name");

String lastName=sc.nextLine();

System.out.println("Gender ...... M or F ?");

char gender=sc.next().charAt(0);

System.out.println("Date of Birth");

System.out.println("Day");

int day=sc.nextInt();

System.out.println("Month");

int month=sc.nextInt();

System.out.println("Year");

int year=sc.nextInt();

System.out.println("Height in inches");

double height =sc.nextDouble();

System.out.println("weight (in pounds)");

double weight =sc.nextDouble();

HealthProfile obj=new HealthProfile(firstName, lastName, gender, day, month, year, height, weight);

int age=obj.calculateAge();

System.out.println("Patient age is "+age + " Years");

int maxHeartRate=obj.maximumHeartRate();

System.out.println("Patient Maximum Heart Rate is "+maxHeartRate + " beats per minute");

//Call targetHeartRateRange

double targetHeartRateRange []=obj.targetHeartRateRange();

System.out.println("Target Heart Range is "+targetHeartRateRange [0] + " - " +targetHeartRateRange [1]);

//Call calculateBMI

double bmi=obj.calculateBMI();

System.out.println("Patient BMI is "+bmi);

//call getBMIValue

System.out.println("Patient BMI Value is "+obj.getBMIValue());

}

}

Step-by-step explanation:

  • Inside the calculate the age in years method, create Date of Birth of Object.
  • Create Current Date .
  • Inside the method maximumHeartRate , create a New Object of HealthProfile class and Call its constructor .
User BenjiFB
by
4.6k points