根据闰年计算一个月内的天数?

时间:2013-03-01 00:49:00

标签: java

我需要帮助制作一个程序,用户输入一年和一个月(例如2012年3)并输出其中的天数,但是,它必须通过确定它是闰年还是不是这样它可以告诉几个月有多少天,所以它不能预先编程,它必须自己计算。并且当输入无效月份(仅限1-12)或输入负整数/小数时,它必须提示重新输入。我不知道如何开始这个!

我确实开始了,我不会问,

System.out.println(“输入年份和月份:”);

    if (stdin.hasNextInt()) {
         yes = true;
    int year =  stdin.nextInt();
    int month = stdin.nextInt();
    }
        else {
            System.out.println("Invalid Input. ");}

    if (yes = true);

    }
}

我不知道如何将两个数字作为单独的INT(2012 3)以及如果其无效或如果其无效则如何拒绝月份....

2 个答案:

答案 0 :(得分:1)

您必须检查两件事情,以判断一年是否为闰年:

  1. 如果年份可以被4整除,但不能被100整除,则为闰年。

  2. 如果年份可以被100整除,并且可以被400整除,那么它就是闰年。

  3. 将其改为uppppp

    (也就是谷歌,下次是谷歌 - >“如何判断一年是否是闰年”)

答案 1 :(得分:1)

让我们编写一个函数,该函数采用年和月(1..12)数字并返回给定月份的天数

public int numberOfDays(int year,int month){

大多数月份每年都有固定的天数,所以:

if (month==1||month==3||month==5||month==7||
    month==8||month==10||month==12) return 31;
if (month==4||month==6||month==9||month==11) return 30;

此时(如果函数未返回),月份为二月,或者是无效月份。如果月份无效,让我们返回一个明显无效的值:

if (month!=2) return -1;

现在它变得有趣了,因为2月闰年有29天,否则有28天。自1582年引入公历以来,闰年定义为4年的倍数,但100年的倍数不是闰年,除非它们也是400的倍数(即1600,2000和2004年是闰年; 1900年和2003年不是)。

if (year>1582) {
 if (month%4==0&&(month%100!=0||month%400==0)) return 29; else return 28;
} 

1582年之前,朱利安历法生效。在朱利安历法下,每年可被4整除的是闰年。

else {
 //julian calendar
 if (month%4==0) return 29; else return 28;
}

现在代码调用numberOfDays

int days;
do {
 System.out.println("blah blah blah");
 int year  =  stdin.nextInt();
 int month = stdin.nextInt();
 days  =  numberOfDays(year,month);
} while (days<0);