====== Занятие 09.10.13 ======
Рассмотрим следующую задачу:
===== Задача =====
С клавиатуры вводится четыре натуральных числа: ''d'' (номер дня), ''m'' (номер месяца), ''y'' (номер года) и ''n''. Напечатайте в консоли дату, которая наступит через ''n'' дней после даты ''d.m.y''.
//Пример:// Ввели следующие 4 числа: 2, 1, 2012, 58. Через 58 дней после 2 января 2012 года наступает 29 февраля 2012 года, поэтому в консоли должна быть напечатана следующая дата: ''29.02.2012''.
//Замечание:// Год с номером ''y'' является високосным, если либо ''y'' кратно 4, но не кратно 100; либо ''y'' кратно 400. Например, 2000 -- високосный год, а 2100, 2200 и 2300 -- не високосные годы.
===== Решение =====
Создадим новый класс ''Date'', который является представлением даты. Для хранения самой даты нам понадобятся поля ''day'' (день), ''month'' (месяц) и ''year'' (год). Также напишем два метода:
* ''Date()'' - конструктор, позволяющий создавать дату по данным дню, месяцу и году;
* ''addOneDay()'' - метод, который прибавляет к данной дате один день.
Кроме того, нам оказался нужным еще один вспомогательный метод ''isLeapYear()'', позволяющий проверять год на високосность.
package com.nsunc.wiki.penname;
public class Date {
private int day;
private int month;
private int year;
private static int[] daysInMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,
31 };
/*
* Проверка того, является ли год y високосным.
*/
public static boolean isLeapYear(int y) {
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
return true;
else
return false;
}
/*
* Конструктор.
*/
Date(int d, int m, int y) {
day = d;
month = m;
year = y;
}
/*
* Прибавляем к дате один день.
*/
public void addOneDay(){
if(month != 2 || (month == 2 && !isLeapYear(year))){
if(day < daysInMonth[month-1])
day++;
else if(month != 12){
day = 1;
month++;
} else {
day = 1;
month = 1;
year++;
}
} else{
if(day <= daysInMonth[month-1])
day++;
else{
day = 1;
month++;
}
}
}
}
===== Задание =====
Допишите в полученном классе метод ''toString()'', позволяющий преобразовывать хранимую дату в строку формата ''DD.MM.YYYY''. Он должен выглядеть так:
public String toString(){
// Здесь будет Ваш код.
}
Например, если хранимая дата - это 1 февраля 2013 года, то должна быть выдана строка ''01.02.2013''.
С помощью полученного класса ''Date'' доведите решение задачи о датах до конца.
;#;
[[java:elective|Список занятий]]
;#;