/*
Sabater, Carl Ferddie U.
ICST214 - N2
11.___.2015
E3 - Target-Heart-Rate Calculator (3.16/139 Deitel)
Problem:
(Target-Heart-Rate Calculator) While exercising, you can use a heart-rate monitor to see
that your heart rate stays within a safe range suggested by your trainers and doctors. According to the
American Heart Association (AHA) ( www.americanheart.org/presenter.jhtml?identifier=4736 ),
the formula for calculating your maximum heart rate in beats per minute is 220 minus your age in
years. Your target heart rate is a range that’s 50–85% of your maximum heart rate. [Note: These for-
mulas are estimates provided by the AHA. Maximum and target heart rates may vary based on the
health, fitness and gender of the individual. Always consult a physician or qualified health care pro-
fessional before beginning or modifying an exercise program.] Create a class called HeartRates . The
class attributes should include the person’s first name, last name and date of birth (consisting of sep-
arate attributes for the month, day and year of birth). Your class should have a constructor that re-
ceives this data as parameters. For each attribute provide set and get methods. The class also should
include a method that calculates and returns the person’s age (in years), a method that calculates and
returns the person’s maximum heart rate and a method that calculates and returns the person’s target
heart rate. Write a Java application that prompts for the person’s information, instantiates an object
of class HeartRates and prints the information from that object—including the person’s first name,
last name and date of birth—then calculates and prints the person’s age in (years), maximum heart
rate and target-heart-rate range.
Algorithm:
*/
import java.util.*;
public class Main {
public static class HeartRates {
//Initialize Variables.
private String firstName, lastName
; private int month, day, year = 0;
//Constructor
public HeartRates
(String FName,
String LName,
int mon,
int da,
int ye
) {
firstName = FName;
lastName = LName;
month = mon;
day = da;
year = ye;
}
//Set First Name.
public void setFirstName
(String FName
) { firstName = FName;
}
//Get First Name.
public String getFirstName
() { return firstName;
}
//Set Last Name.
public void setLastName
(String LName
) { lastName = LName;
}
//Get Last Name.
return firstName;
}
//Set Month, Day and Year
public void setBirthDate(int mon, int da, int ye) {
month = mon;
day = da;
year = ye;
}
//Get Month, Day and Year
public int getBirthDate() {
return day/month/year;
}
public int getAge(){
return 2015 - year;
}
public int MaximumHeartRate() {
return 220 - getAge();
}
//displays the target heart rate range
public void targetHeartRate(){
System.
out.
print("Target Heart Rate Range: "+ MaximumHeartRate
() * 0.5 + " to "+ MaximumHeartRate
() * 0.85); }
}
public static void main
(String[] args
) {
Scanner input
= new Scanner
(System.
in);
System.
out.
println("Enter First Name: "); String firstName
= input.
nextLine(); System.
out.
println("Enter Last Name: "); String lastName
= input.
nextLine(); System.
out.
println("Enter BirthDate: "); int month = input.nextInt();
int day = input.nextInt();
int year = input.nextInt();
HeartRates myHeartRate = new HeartRates(firstName, lastName, month, day, year);
System.
out.
printf("Name: "+ firstName
+", " + lastName
); System.
out.
printf("Age in years: \n", myHeartRate.
getAge()); System.
out.
println("Maximum Heartrate: "+ myHeartRate.
MaximumHeartRate()); myHeartRate.targetHeartRate();
}
}
LyoKU2FiYXRlciwgQ2FybCBGZXJkZGllIFUuCklDU1QyMTQgLSBOMgoxMS5fX18uMjAxNQpFMyAtIFRhcmdldC1IZWFydC1SYXRlIENhbGN1bGF0b3IgKDMuMTYvMTM5IERlaXRlbCkKUHJvYmxlbToKKFRhcmdldC1IZWFydC1SYXRlIENhbGN1bGF0b3IpIFdoaWxlIGV4ZXJjaXNpbmcsIHlvdSBjYW4gdXNlIGEgaGVhcnQtcmF0ZSBtb25pdG9yIHRvIHNlZQp0aGF0IHlvdXIgaGVhcnQgcmF0ZSBzdGF5cyB3aXRoaW4gYSBzYWZlIHJhbmdlIHN1Z2dlc3RlZCBieSB5b3VyIHRyYWluZXJzIGFuZCBkb2N0b3JzLiBBY2NvcmRpbmcgdG8gdGhlCkFtZXJpY2FuIEhlYXJ0IEFzc29jaWF0aW9uIChBSEEpICggd3d3LmFtZXJpY2FuaGVhcnQub3JnL3ByZXNlbnRlci5qaHRtbD9pZGVudGlmaWVyPTQ3MzYgKSwKdGhlIGZvcm11bGEgZm9yIGNhbGN1bGF0aW5nIHlvdXIgbWF4aW11bSBoZWFydCByYXRlIGluIGJlYXRzIHBlciBtaW51dGUgaXMgMjIwIG1pbnVzIHlvdXIgYWdlIGluCnllYXJzLiBZb3VyIHRhcmdldCBoZWFydCByYXRlIGlzIGEgcmFuZ2UgdGhhdOKAmXMgNTDigJM4NSUgb2YgeW91ciBtYXhpbXVtIGhlYXJ0IHJhdGUuIFtOb3RlOiBUaGVzZSBmb3ItCm11bGFzIGFyZSBlc3RpbWF0ZXMgcHJvdmlkZWQgYnkgdGhlIEFIQS4gTWF4aW11bSBhbmQgdGFyZ2V0IGhlYXJ0IHJhdGVzIG1heSB2YXJ5IGJhc2VkIG9uIHRoZQpoZWFsdGgsIGZpdG5lc3MgYW5kIGdlbmRlciBvZiB0aGUgaW5kaXZpZHVhbC4gQWx3YXlzIGNvbnN1bHQgYSBwaHlzaWNpYW4gb3IgcXVhbGlmaWVkIGhlYWx0aCBjYXJlIHByby0KZmVzc2lvbmFsIGJlZm9yZSBiZWdpbm5pbmcgb3IgbW9kaWZ5aW5nIGFuIGV4ZXJjaXNlIHByb2dyYW0uXSBDcmVhdGUgYSBjbGFzcyBjYWxsZWQgSGVhcnRSYXRlcyAuIFRoZQpjbGFzcyBhdHRyaWJ1dGVzIHNob3VsZCBpbmNsdWRlIHRoZSBwZXJzb27igJlzIGZpcnN0IG5hbWUsIGxhc3QgbmFtZSBhbmQgZGF0ZSBvZiBiaXJ0aCAoY29uc2lzdGluZyBvZiBzZXAtCmFyYXRlIGF0dHJpYnV0ZXMgZm9yIHRoZSBtb250aCwgZGF5IGFuZCB5ZWFyIG9mIGJpcnRoKS4gWW91ciBjbGFzcyBzaG91bGQgaGF2ZSBhIGNvbnN0cnVjdG9yIHRoYXQgcmUtCmNlaXZlcyB0aGlzIGRhdGEgYXMgcGFyYW1ldGVycy4gRm9yIGVhY2ggYXR0cmlidXRlIHByb3ZpZGUgc2V0IGFuZCBnZXQgbWV0aG9kcy4gVGhlIGNsYXNzIGFsc28gc2hvdWxkCmluY2x1ZGUgYSBtZXRob2QgdGhhdCBjYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSBwZXJzb27igJlzIGFnZSAoaW4geWVhcnMpLCBhIG1ldGhvZCB0aGF0IGNhbGN1bGF0ZXMgYW5kCnJldHVybnMgdGhlIHBlcnNvbuKAmXMgbWF4aW11bSBoZWFydCByYXRlIGFuZCBhIG1ldGhvZCB0aGF0IGNhbGN1bGF0ZXMgYW5kIHJldHVybnMgdGhlIHBlcnNvbuKAmXMgdGFyZ2V0CmhlYXJ0IHJhdGUuIFdyaXRlIGEgSmF2YSBhcHBsaWNhdGlvbiB0aGF0IHByb21wdHMgZm9yIHRoZSBwZXJzb27igJlzIGluZm9ybWF0aW9uLCBpbnN0YW50aWF0ZXMgYW4gb2JqZWN0Cm9mIGNsYXNzIEhlYXJ0UmF0ZXMgYW5kIHByaW50cyB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGF0IG9iamVjdOKAlGluY2x1ZGluZyB0aGUgcGVyc29u4oCZcyBmaXJzdCBuYW1lLApsYXN0IG5hbWUgYW5kIGRhdGUgb2YgYmlydGjigJR0aGVuIGNhbGN1bGF0ZXMgYW5kIHByaW50cyB0aGUgcGVyc29u4oCZcyBhZ2UgaW4gKHllYXJzKSwgbWF4aW11bSBoZWFydApyYXRlIGFuZCB0YXJnZXQtaGVhcnQtcmF0ZSByYW5nZS4KQWxnb3JpdGhtOgoKKi8KCmltcG9ydCBqYXZhLnV0aWwuKjsKCgoKCnB1YmxpYyBjbGFzcyBNYWluIHsKCXB1YmxpYyBzdGF0aWMgY2xhc3MgSGVhcnRSYXRlcyB7CgogICAgIAoKICAgIC8vSW5pdGlhbGl6ZSBWYXJpYWJsZXMuCgogICAgcHJpdmF0ZSBTdHJpbmcgZmlyc3ROYW1lLCBsYXN0TmFtZTsKICAgIHByaXZhdGUgaW50IG1vbnRoLCBkYXksIHllYXIgPSAwOwoKCiAgICAvL0NvbnN0cnVjdG9yCgogICAgcHVibGljIEhlYXJ0UmF0ZXMoU3RyaW5nIEZOYW1lLCBTdHJpbmcgTE5hbWUsIGludCBtb24sIGludCBkYSwgaW50IHllKSB7CgogICAgICAgIGZpcnN0TmFtZSA9IEZOYW1lOwogICAgICAgIGxhc3ROYW1lID0gTE5hbWU7CiAgICAgICAgbW9udGggPSBtb247CiAgICAgICAgZGF5ID0gZGE7CiAgICAgICAgeWVhciA9IHllOwogICAgfQoKICAgIC8vU2V0IEZpcnN0IE5hbWUuCgogICAgcHVibGljIHZvaWQgc2V0Rmlyc3ROYW1lKFN0cmluZyBGTmFtZSkgewogICAgICAgIGZpcnN0TmFtZSA9IEZOYW1lOwogICAgfQogICAgLy9HZXQgRmlyc3QgTmFtZS4KICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rmlyc3ROYW1lKCkgewogICAgICAgIHJldHVybiBmaXJzdE5hbWU7CiAgICB9CgogICAgLy9TZXQgTGFzdCBOYW1lLgogICAgcHVibGljIHZvaWQgc2V0TGFzdE5hbWUoU3RyaW5nIExOYW1lKSB7CiAgICAgICAgbGFzdE5hbWUgPSBMTmFtZTsKICAgICAgICB9CgogICAgLy9HZXQgTGFzdCBOYW1lLgoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0bGFzdE5hbWUoKSB7CiAgICAgICAgcmV0dXJuIGZpcnN0TmFtZTsKICAgIH0KICAgIC8vU2V0IE1vbnRoLCBEYXkgYW5kIFllYXIKICAgIHB1YmxpYyB2b2lkIHNldEJpcnRoRGF0ZShpbnQgbW9uLCBpbnQgZGEsIGludCB5ZSkgewogICAgICAgIG1vbnRoID0gbW9uOwogICAgICAgIGRheSA9IGRhOwogICAgICAgIHllYXIgPSB5ZTsKICAgIH0KIC8vR2V0IE1vbnRoLCBEYXkgYW5kIFllYXIKICAgIHB1YmxpYyBpbnQgZ2V0QmlydGhEYXRlKCkgewogICAgICAgIHJldHVybiBkYXkvbW9udGgveWVhcjsKICAgIH0KCiAgICBwdWJsaWMgaW50IGdldEFnZSgpewogICAgICAgIHJldHVybiAyMDE1IC0geWVhcjsKICAgICAgICB9CiAgICAgCiAgICBwdWJsaWMgaW50IE1heGltdW1IZWFydFJhdGUoKSB7CiAgICAgICAgcmV0dXJuIDIyMCAtIGdldEFnZSgpOwogICAgfQogICAgIAogICAgLy9kaXNwbGF5cyB0aGUgdGFyZ2V0IGhlYXJ0IHJhdGUgcmFuZ2UKICAgIHB1YmxpYyB2b2lkIHRhcmdldEhlYXJ0UmF0ZSgpewogICAgU3lzdGVtLm91dC5wcmludCgiVGFyZ2V0IEhlYXJ0IFJhdGUgUmFuZ2U6ICIrIE1heGltdW1IZWFydFJhdGUoKSAqIDAuNSArICIgdG8gIisgTWF4aW11bUhlYXJ0UmF0ZSgpICogMC44NSk7CiAgICB9Cn0KICAgICAgICAKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCiAgICAgICAgU2Nhbm5lciBpbnB1dCA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbnRlciBGaXJzdCBOYW1lOiAiKTsKICAgICAgICBTdHJpbmcgZmlyc3ROYW1lID0gaW5wdXQubmV4dExpbmUoKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVudGVyIExhc3QgTmFtZTogIik7CiAgICAgICAgU3RyaW5nIGxhc3ROYW1lID0gaW5wdXQubmV4dExpbmUoKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVudGVyIEJpcnRoRGF0ZTogIik7CiAgICAgICAgaW50IG1vbnRoID0gaW5wdXQubmV4dEludCgpOwogICAgICAgIGludCBkYXkgPSBpbnB1dC5uZXh0SW50KCk7CiAgICAgICAgaW50IHllYXIgPSBpbnB1dC5uZXh0SW50KCk7CgogICAgICAgIEhlYXJ0UmF0ZXMgbXlIZWFydFJhdGUgPSBuZXcgSGVhcnRSYXRlcyhmaXJzdE5hbWUsIGxhc3ROYW1lLCBtb250aCwgZGF5LCB5ZWFyKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiTmFtZTogIisgZmlyc3ROYW1lICsiLCAiICsgbGFzdE5hbWUpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCJBZ2UgaW4geWVhcnM6IFxuIiwgbXlIZWFydFJhdGUuZ2V0QWdlKCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTWF4aW11bSBIZWFydHJhdGU6ICIrIG15SGVhcnRSYXRlLk1heGltdW1IZWFydFJhdGUoKSk7CiAgICAgICAgbXlIZWFydFJhdGUudGFyZ2V0SGVhcnRSYXRlKCk7CgogICAgfQoKfQoK