Для домашнего задания я хочу вычислить n-е число дня в году в программе Jave.
Итак, пользователь задает дату, а затем сообщает, сколько это дней в году.Итак, 1 января 2019 года, это день 1. У меня уже есть функция, которая дает количество дней в месяце.Эта функция также учитывает високосные годы.Поэтому мне нужна только функция, которая возвращает номер дня в году.То, что я думал, я должен был сделать, но это не работает, потому что я не могу уменьшить месяц:
static int dayNumberInYear(int day, Month month, int year)
{
while(month!=Month.JANUARY)
{
int dayNumberInYear=dayNumberInYear+numberOfDaysInMonth(year,month);
Month month = month(-1);
}
return dayNumberInYear(day,month,year)+day;
}
Я знаю, что это неправильно, поэтому я надеюсь, что кто-то может мне помочь.Я думаю, что цикл лучше, но я не знаю как.И первая строка, static int dayNumberInYear(int day, Month month, int year)
, мне не разрешено это менять, поэтому это должна быть первая строка. Мне не разрешено использовать классы манипулирования датами JRE, такие как Календарь, Дата и т. Д.!
Я новичок, поэтому, пожалуйста, я надеюсь, что кто-то может мне помочь.Вот код, который у меня есть:
package ;
import java.util.Scanner;
public class Easter
{
public static void main(String[] arguments)
{
Scanner scanner=new Scanner(System.in);
System.out.println("Enter the day month and year with spaces in between:");
int day=scanner.nextInt();
int monthNumber=scanner.nextInt();
Month month=Month.month(monthNumber);
int year=scanner.nextInt();
System.out.println("The month "+month+" has "+numberOfDaysInMonth(year,month)+" days in year "+year);
System.out.println("The number of this date in a year:"+dayNumberInYear(day,month,year));
scanner.close();
}
static boolean isLeapYear(int year)
{
if(year%100==0)
year=year/100;
if(year%4==0)
return true;
return false;
}
static int numberOfDaysInMonth(int year, Month month)
{
switch(month)
{
case APRIL:
case JUNE:
case SEPTEMBER:
case NOVEMBER:
return 30;
case FEBRUARY:
if(isLeapYear(year))
return 29;
return 28;
default:
return 31;
}
}
static int dayNumberInYear(int day, Month month, int year)
{
while(month!=Month.JANUARY)
{
int dayNumberInYear=dayNumberInYear+numberOfDaysInMonth(year,month);
Month month = month(-1);
}
return dayNumberInYear(day,month,year)+day;
}
}
Уже есть готовый класс Month.java: package;
public enum Month {
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER;
public int number()
{
return ordinal()+1;
}
public static Month month(int number)
{
return values()[number-1];
}
}