1   // joi/7/bank/class Month                         
2   //                                                            
3   //                                                            
4   // Copyright 2003 Bill Campbell and Ethan Bolker                         
5                                                               
6   import java.io.*;
7   import java.util.Calendar;
8   
9   /**
10   * The Month class implements an object that keeps
11   * track of the month of the year. 
12   *
13   * @version 7
14   */ 
15  
16  public class Month 
17  {
18      private static final String[] monthName =
19          {"Jan", "Feb", "Mar", "Apr", "May", "Jun", 
20           "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
21  
22      private int month;
23      private int year;
24  
25      /**
26       *  Month constructor constructs a Month object
27       *  initialized to the current month and year.
28       */
29  
30      public Month()
31      {
32          Calendar rightNow = Calendar.getInstance();
33          month = rightNow.get( Calendar.MONTH );
34          year  = rightNow.get( Calendar.YEAR );
35      }
36  
37      /**
38       *  Advance to next month.
39       */
40  
41      public void next() 
42      {
43          month = (month + 1) % 12;
44          if (month == 0) {
45              year++;
46          }
47      }
48  
49      /**
50       * How a Month is displayed as a String -
51       * for example, "Jan, 2003".
52       * 
53       * @return String representation of the month.
54       */
55  
56      public String toString() 
57      {
58          return monthName[month] + ", " + year;
59      }
60  
61      /**
62       * For unit testing.
63       */
64  
65      public static void main( String[] args ) 
66      {
67          Month m = new Month();
68          for (int i=0; i < 14; i++, m.next()) {
69              System.out.println(m);
70          }
71          for (int i=0; i < 35; i++, m.next()); // no loop body
72          System.out.println( "three years later: " + m );
73          for (int i=0; i < 120; i++, m.next());// no loop body
74          System.out.println( "ten years later: " + m );
75      }
76  }
77