Определите метод Java, который принимает три целых значения (месяц, день и год) в качестве аргументов и возвращает номер этого дня в году (целое число от 1 до 365 или 366 для високосных лет). Ваш метод должен иметь следующий заголовок: public static int dayNum (int month, int day, int year) Чтобы вычислить номер дня для заданной даты, используйте следующую формулу:
а. dayNum = 31 * (месяц - 1) + день
б. Если месяц после февраля (2), то вычтите (4 * месяц + 23)/10 из числа дня.
в. Если год високосный и дата после 29 февраля, добавьте 1 к dayNum.
Например, рассмотрим 2 марта 2000 года. dayNum равно 31 * (3 - 1) + 2, или 64. Март идет после февраля, поэтому мы вычитаем (4 * 3 - 23)/10, или 35/10, или 3 ( не забудьте использовать целочисленное деление, которое усекает остаток). Это дает нам номер дня 61. Однако 2000 год был високосным, и 2 марта следует за 29 февраля, поэтому мы добавляем 1 к dayNum. Наш окончательный ответ говорит нам, что 2 марта 2000 года был 62-й день года.
Я продолжаю получать неточные результаты, когда тестирую этот метод, который я сделал. Если я ввожу 2 марта 2000 года, он сообщает мне, что это 64-й день, а если я вхожу 29 февраля, он сообщает мне, что это 57-й день. Любые изменения в моем коде, которые работают со спецификациями задания, и объяснение того, что я сделал неправильно, будут высоко оценены.
public static int dayNum (int month, int day, int year)
{
int dayNum;
dayNum = 31 * (month - 1) + day;
if(month==2)
{
dayNum = dayNum - (4 * month + 23)/10;
if(((year % 4==0 || year % 400 == 0 && (year % 100 != 0)))&&(month>2))
{
dayNum= dayNum + 1;
}
}
return dayNum;
if
проверяет только февраль? - person MadProgrammer   schedule 01.05.2014year % 400==0 || year % 4 == 0 && year % 100 != 0
- вставьте квадратные скобки (почти) везде, где хотите, чтобы сделать это наиболее читабельным для вас. - person Dawood ibn Kareem   schedule 02.05.2014