黑马程序员技术交流社区
标题:
万年历的小练习
[打印本页]
作者:
八宝
时间:
2015-12-10 17:10
标题:
万年历的小练习
public class calendarDemo {
public static void main(String[] args) {
Calendars(2015,12);
}
// 判断一个年份是闰年还是平年
public static boolean isRun(int year) {
if ((year%4==0&&year%100!=0) || year%400==0)
return true;
return false;
}
// 判断一个月份是大月还是小月,2月单独判断并返回这个月份的天数。
public static int getMonthDays(int year, int month) {
int days=31;
switch (month) {
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if (isRun(year))
days = 29;
else
days = 28;
break;
}
return days;
}
// 判断一个年份月份距离1900年的1月1日是多少天
public static int getAllDays(int year, int month) {
int allyeardays = 0;
for (int x = 1900; x < year; x++) {
if (isRun(x))
allyeardays += 366;
else
allyeardays += 365;
}
for (int y = 1; y < month; y++) {
allyeardays += getMonthDays(year, y);
}
return allyeardays;
}
// 判断一个月份的第一天是周几?
public static int getWeek(int year, int month) {
int day = getAllDays(year, month)+1; //这里+1是求出本月的一日距离1900年1月1日的天数
return day % 7;
}
// 输出日历;按照 星期日,星期一,星期二,星期三,星期四,星期五,星期六的格式
public static void Calendars(int year, int month) {
int week = getWeek(year, month);
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
for(int x= 0;x<week;x++)
{
System.out.print("\t");
}
for (int x = 1; x <= getMonthDays(year, month); x++) {
System.out.print(x + "\t");
week++;
if (week % 7 == 0)
System.out.println();
}
}
}
复制代码
作者:
八宝
时间:
2015-12-11 20:23
// 判断一个年份月份距离1900年的1月1日是多少天
public static int getAllDays(int year, int month) {
int allyeardays = 0;
for (int x = 1900; x < year; x++) {
if (isRun(x))
allyeardays += 366;
else
allyeardays += 365;
}
for (int y = 1; y < month; y++) {
allyeardays += getMonthDays(year, y);
}
return allyeardays;
}
复制代码
这段代码
for (int y = 1; y < month; y++) {
allyeardays += getMonthDays(year, y); //这里传递参数的时候一定要注意,我就是
getMonthDays(year,y)这个出错找了一下午没找到出错的原因,我是getMonthDays(year,month),这样算的天数一直都是错误的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2