What is the effect of attempting to compile and run the Java program that consists only of the following:
public class Test
{
   public static void main(String[] args)
   {  int[] months = new months[NUM_OF_MONTHS];
      for (int i = 0; i < NUM_OF_MONTHS; i++)
      {  months[i] = DAYS_IN_MONTH;
      }
      DAYS_IN_MONTH--;
      months[APR] = DAYS_IN_MONTH;
      months[JUN] = DAYS_IN_MONTH;
      months[SEP] = DAYS_IN_MONTH;
      months[NOV] = DAYS_IN_MONTH;
      DAYS_IN_MONTH -= 2;
      months[FEB] = DAYS_IN_MONTH;
   }

   private static final int NUM_OF_MONTHS = 12;
   private static final int DAYS_IN_MONTH = 31;
   private static final int JAN = 0, FEB = 1, MAR = 2,
      APR = 3, MAY = 4, JUN = 5, JUL = 6, AUG = 7, 
      SEP = 8, OCT = 9, NOV = 10, DEC = 11;
}
(a) The program compiles but, when run, gives a null pointer exception.
(b) It does not compile.
(c) It compiles but, when run, gives an array out of bounds exception.
(d) It compiles and, when run, successfully fills the array with the number of days in each month of a non-leap year.

Select the most appropriate answer.