Я могу понять, почему шаблон, который вы дали, может быть проблематичным для начинающего: С одной стороны, массив месяцев не является статичным, с другой стороны, ваши перегруженные конструкторы не могут получить к нему доступ, пока они делегировать конструктор this (int, int, int).
Чтобы исправить код, который вы должны объявить статическим массивом месяцев, создайте статический метод, который преобразует ваши строки месяца в число месяца. Кроме того, вы должны закомментировать определенные строки , чтобы даже скомпилировать и протестировать это .
Итак, давайте решим (ii) вместе
Заменить:
private String[] months
с:
private static String[] months
Заменить:
public Date3( String m, int d, int y){
this(m, d, y);
}
с:
public Date3( String m, int d, int y){
this(convMonth(m), d, y);
}
public static int convMonth(String m) {
int index =1; // january will be 1
for(String month : months) {
if(m.equals(month)) break;
index++;
}
return index;
}
Закомментируйте второй конструктор-шаблон примерно так:
/*public Date3( int m, int y){
this(m,0, y);
}*/
И закомментируйте вызов этого второго конструктора-шаблона в Date3Test.java:
//System.out.println(myDate3);
Теперь это должно скомпилироваться, запустить и дать вам ответ для (ii). Вы можете решить (iii) самостоятельно, просто внедрив закомментированный второй конструктор-шаблон и повторно активировать этот println ().