/Users/petercappello/NetBeansProjects/56-2014/56-2014-lab1/src/HeartRates.java
 1 
 2 import java.util.Calendar;
 3 import javax.swing.JOptionPane;
 4 
 5 /**
 6  *
 7  * @author Peter Cappello
 8  */
 9 public class HeartRates 
10 {
11     private String firstName;
12     private String lastName;
13     private int dobMonth;
14     private int dobDay;
15     private int dobYear;
16     
17     public HeartRates()
18     {
19         firstName = JOptionPane.showInputDialog( "Please enter your first name." );
20         lastName = JOptionPane.showInputDialog( "Please enter your last name." );
21         dobMonth  = getInt( "Please enter your month of birth as a number." );
22         dobDay    = getInt( "Please enter your day of birth." );
23         dobYear   = getInt( "Please enter your year of birth." );
24     }
25     
26     public String getFirstName() { return firstName; }
27     public String getLastName()  { return lastName; }
28     public int    getDobMonth()  { return dobMonth; }
29     public int    getDobDay()    { return dobDay; }
30     public int    getDobYear()   { return dobYear; }
31     
32     public void setFirstName( String firstName ) { this.firstName = firstName; }
33     public void setLastName( String lastName ) { this.lastName = lastName; }
34     
35     public void setDobMonth( int dobMonth ) { this.dobMonth =  dobMonth; }
36     public void setDobDay( int dobDay ) { this.dobDay = dobDay; }
37     public void setDobYear( int dobYear ) { this.dobYear = dobYear; }
38     
39     public int getAge() 
40     { 
41         Calendar rightNow = Calendar.getInstance();
42         int age = rightNow.get( Calendar.YEAR ) - dobYear;
43         // has birthday occurred this year? ( Calendar.MONTH is in [0, 11] )
44         if ( dobMonth < rightNow.get( Calendar.MONTH ) + 1 )
45         {
46             return age; // birthday has occurred this year
47         }
48         if ( dobMonth == rightNow.get( Calendar.MONTH ) + 1 && dobDay <= rightNow.get( Calendar.DAY_OF_MONTH ) )
49         {
50             return age; // birthday has occurred this year
51         }
52         return --age; // birthday has NOT yet occurred this year
53     }
54     
55     public int getMaxHeartRate() { return 220 - getAge(); }
56     
57     // Since we don't know arrays or lists, make 2 methods minTargetHeartRate, maxTargetHeartRate
58     public int minTargetHeartRate() { return 5 * getMaxHeartRate() / 10; }
59     
60     public int maxTargetHeartRate() { return 85 * getMaxHeartRate() / 100; }
61     
62     /**
63      * Should use StringBuilder.
64      */
65     @Override
66     public String toString()
67     {
68         return getFirstName() 
69                 + " " + lastName 
70                 + "\nDate of birth: " 
71                 + dobMonth + "/"  + dobDay + "/" + dobYear
72                 + "\nAge: " + getAge() 
73                 + " Max heart rate: " + getMaxHeartRate()
74                 + " Target heart Rate: [" + minTargetHeartRate()
75                 + ", " + maxTargetHeartRate() + "]";
76     }
77     
78     public static void main( String[] args )
79     {
80         HeartRates heartRates = new HeartRates();
81         System.out.println( heartRates );
82     }
83     
84     private int getInt( String prompt )
85     {
86         String intString = JOptionPane.showInputDialog( prompt );
87         return Integer.parseInt( intString );
88     }
89 }
90