我需要帮助制作一个程序,用户输入一年和一个月(例如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)以及如果其无效或如果其无效则如何拒绝月份....
答案 0 :(得分:1)
您必须检查两件事情,以判断一年是否为闰年:
如果年份可以被4整除,但不能被100整除,则为闰年。
如果年份可以被100整除,并且可以被400整除,那么它就是闰年。
将其改为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);