The Java Program: Person.java
1
2
3 import java.text.SimpleDateFormat;
4 import java.text.ParseException;
5 import java.util.Calendar;
6
7 class Person {
8
9
10 final String name;
11 private final Calendar dob;
12
13
14 Person (String name, Calendar dob) {
15 this.name = name; this.dob = dob;
16 }
17
18
19 int age () {
20 final Calendar today = Calendar.getInstance();
21 final int diff = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
22 final int this_day = today.get(Calendar.DAY_OF_YEAR);
23 final int dob_day = dob.get(Calendar.DAY_OF_YEAR);
24 return this_day > dob_day ? diff : diff-1;
25 }
26
27
28 public static final SimpleDateFormat dmy =
29 new SimpleDateFormat ("dd MMM yyyy");
30
31 public static Calendar date (final String x) throws ParseException {
32 final Calendar r = Calendar.getInstance();
33 r.setTime (dmy.parse (x));
34 return r;
35 }
36
37 private static String f = "Age is %s%n";
38
39 public static void main (final String [] args) throws ParseException {
40 final Person p = new Person ("William H. Gates", date ("28 Oct 1955"));
41 System.out.format (f, p.age());
42
43 final Person m = new Person ("Richard Dedekind", date ("6 Oct 1831"));
44 System.out.format (f, m.age());
45
46 final Person h = new Person ("Hans Arnold Heilbronn", date ("8 Oct 1908"));
47 System.out.format (f, h.age());
48
49 final Person a = new Person ("Howard Aiken", date ("14 Mar 1900"));
50 System.out.format (f, a.age());
51
52 }
53 }