Конспект урока "Работа с классом даты в Java (с проверкой корректности)"


ФИО автора: Трофимов Виктор Геннадьевич
Место работы: ГКООУ санаторная школа-интернат №28 г. Ростова-на-Дону
Должность: учитель информатики и ИКТ
РАБОТА С КЛАССОМ ДАТЫ НА JAVA
(С ПРОВЕРКОЙ ДАТ И ВИСОКОСНОГО ГОДА)
Описание: создан класс для хранения даты (DateThree), в DateThreeTest можно задать дату,
которая будет проверена внутри класса и вернёт результат (или сообщения об ошибке)
Файл DateThree.java:
public class DateThree {
private int day = 1;
private int month = 1;
private int year = 1000;
private boolean correctData(int day, int month) {
boolean correct = true;
byte maxDay = 31;
this.month = month;
if (month < 1) {
System.out.println("Некорректный ввод. Порядковый номер месяца не может
быть меньше 1.");
this.month = 1;
correct = false;
}
if (month > 12) {
System.out.println("Некорректный ввод. Порядковый номер месяца не может
быть больше 12.");
this.month = 12;
correct = false;
}
switch(this.month) {
case 1: maxDay = 31; break;
case 2: if (getYear() % 4 == 0 && getYear() % 100 != 0 || getYear() % 400
== 0) maxDay = 29;
else maxDay = 28; break;
case 3: maxDay = 31; break;
case 4: maxDay = 30; break;
case 5: maxDay = 31; break;
case 6: maxDay = 31; break;
case 7: maxDay = 30; break;
case 8: maxDay = 31; break;
case 9: maxDay = 30; break;
case 10: maxDay = 31; break;
case 11: maxDay = 30; break;
case 12: maxDay = 31; break;
}
if (day > maxDay) {
System.out.println("Некорректный ввод числа, в указанном месяце не может
быть больше " + maxDay + " дня.");
this.day = maxDay;
correct = false;
}
if (day < 1) {
System.out.println("Некорректный ввод числа; число не может быть меньше
1.");
this.day = 1;
correct = false;
}
return correct;
}
public void setDay(int day) {
if (correctData(day, this.month))
this.day = day;
}
public void setMonth(int month) {
if (correctData(this.day, month))
this.month = month;
}
public void setYear(int year) {
if (year < 1000 || year > 10000) {
System.out.println("Год вне границ указанного диапазона.");
if (year < 1000) year = 1000;
if (year > 10000) year = 10000;
}
this.year = year;
}
public void setData(int day, int month, int year) {
setYear(year);
setMonth(month);
setDay(day);
}
public int getDay(){
return this.day;
}
public int getMonth(){
return this.month;
}
public int getYear(){
return this.year;
}
public void displayDate() {
System.out.println(getDay() + "." + getMonth() + "." + getYear());
}
}
Файл DateThreeTest.java:
public class DateThreeTest {
public static void main(String args[]){
DateThree date = new DateThree();
date.setDay(31);
date.setMonth(2);
date.setYear(56);
System.out.println(date.getDay() + "." + date.getMonth() + "." +
date.getYear());
date.setData(0, 0, 0); // Некорректно, устанавливаются значения по-умолчанию:
1.1.1000
date.displayDate();
date.setData(28, 2, 1670); // Корректно
date.displayDate();
date.setData(29, 2, 2015); // Некорректно
date.displayDate();
date.setData(29, 2, 2016); // Корректно
date.displayDate();
} // end main
} // end class