A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 八宝 中级黑马   /  2015-12-10 17:10  /  943 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class calendarDemo {
  2.         public static void main(String[] args) {
  3.                 Calendars(2015,12);
  4.         }

  5.         // 判断一个年份是闰年还是平年
  6.         public static boolean isRun(int year) {
  7.                 if ((year%4==0&&year%100!=0) || year%400==0)
  8.                         return true;
  9.                 return false;
  10.         }

  11.         // 判断一个月份是大月还是小月,2月单独判断并返回这个月份的天数。
  12.         public static int getMonthDays(int year, int month) {
  13.                 int days=31;
  14.                 switch (month) {
  15.                 case 4:
  16.                 case 6:
  17.                 case 9:
  18.                 case 11:
  19.                         days = 30;
  20.                         break;
  21.                 case 2:
  22.                         if (isRun(year))
  23.                                 days = 29;
  24.                         else
  25.                                 days = 28;
  26.                         break;
  27.                 }
  28.                 return days;
  29.         }

  30.         // 判断一个年份月份距离1900年的1月1日是多少天
  31.         public static int getAllDays(int year, int month) {
  32.                 int allyeardays = 0;
  33.                 for (int x = 1900; x < year; x++) {
  34.                         if (isRun(x))
  35.                                 allyeardays += 366;
  36.                         else
  37.                                 allyeardays += 365;
  38.                 }
  39.                 for (int y = 1; y < month; y++) {
  40.                         allyeardays += getMonthDays(year, y);
  41.                 }
  42.                 return allyeardays;
  43.         }

  44.         // 判断一个月份的第一天是周几?
  45.         public static int getWeek(int year, int month) {
  46.                 int day = getAllDays(year, month)+1; //这里+1是求出本月的一日距离1900年1月1日的天数
  47.                 return day % 7;
  48.         }

  49.         // 输出日历;按照 星期日,星期一,星期二,星期三,星期四,星期五,星期六的格式
  50.         public static void Calendars(int year, int month) {
  51.                 int week = getWeek(year, month);
  52.                 System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
  53.                 for(int x= 0;x<week;x++)
  54.                 {
  55.                         System.out.print("\t");
  56.                 }
  57.                 for (int x = 1; x <= getMonthDays(year, month); x++) {
  58.                        
  59.                         System.out.print(x + "\t");
  60.                         week++;
  61.                         if (week % 7 == 0)
  62.                                 System.out.println();
  63.                 }
  64.         }

  65. }
复制代码

1 个回复

倒序浏览
  1. // 判断一个年份月份距离1900年的1月1日是多少天
  2.         public static int getAllDays(int year, int month) {
  3.                 int allyeardays = 0;
  4.                 for (int x = 1900; x < year; x++) {
  5.                         if (isRun(x))
  6.                                 allyeardays += 366;
  7.                         else
  8.                                 allyeardays += 365;
  9.                 }
  10.                 for (int y = 1; y < month; y++) {
  11.                         allyeardays += getMonthDays(year, y);
  12.                 }
  13.                 return allyeardays;
  14.         }
复制代码



这段代码
for (int y = 1; y < month; y++) {
                        allyeardays += getMonthDays(year, y); //这里传递参数的时候一定要注意,我就是
getMonthDays(year,y)这个出错找了一下午没找到出错的原因,我是getMonthDays(year,month),这样算的天数一直都是错误的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马