Java计算课程结束的日期

假设,每周曰到周六为整的一周,每周从周日开始算起。其中每周的周一、周二、周五需要去学校上课,总共再上9天本学期就结束了。编写 Java 程序,计算上完 9 次课后的日期及星期,以及从当天起到本学期结束总共需要度过的天数。具体的程序代码如下:

 
  1. import java.util.Calendar;
  2. public class Test14
  3. {
  4.     //定义一周所要上课的天数。定义为周一、周二、周五共3天上课
  5.     public static final int HAVEClass_OF_WEEK=3;
  6.     //定义需要上的课次
  7.     public static final int COURSENUM=9;
  8.     public static void main(String[] args)
  9.     {
  10.      int weekCount=-1; //定义上完全部课程需要多少周,取整数
  11.      int surplusDay=-1; //取整后多余的天数
  12.      int count=0; //获取上了多少次课
  13.      int surplusClass=-1; //取整后所剩的课程数
  14.      int total=0; //上课所花的时间总数
  15.      Calendar calendar=Calendar.getInstance();
  16.      //获取今天是周几
  17.      int weekdays=(calendar.get(Calendar.DAY_OF_WEEK)-1);
  18.      /*
  19.      *定义一周中所要上课的天数,若上课一天则count+1
  20.      *周一、周二、周五上课
  21.      *今天是周三,这个星期只有周五上课
  22.      */
  23.      switch(weekdays)
  24.      {
  25.       case 0:
  26.        case 1: //上课
  27.        count++;
  28.       case 2: //上课
  29.        count++;
  30.       case 3:
  31.       case 4:
  32.       case 5: //上课
  33.        count ++;
  34.       case 6:
  35.        break;
  36.      }
  37.      /*
  38.      *计算今天是周几,如果不是周末,则计算到周六还有几天
  39.      *(因为周日是一周的开始)
  40.      */
  41.      if(0!=weekdays)
  42.      surplusDay=6-weekdays;
  43.      //获取上课所用多少周,取整
  44.      weekCount=(COURSENUM-count)/HAVEClass_OF_WEEK;
  45.      //获取取整后剩下的课程数
  46.      surplusClass=(COURSENUM-count)-(weekCount*HAVEClass_OF_WEEK);
  47.      /*
  48.      *计算取整周后剩下的次数(从每周日开始算起)
  49.      *若不剩课程,则日期-1(因为取整后的最后一天为周六,不上课)
  50.      *则计算周五的日期
  51.      *若还剩1节课,肯定是周一上课,所以天数+2天
  52.      *若还剩2节课,则周一、周二上课,所以天数+3天
  53.      *若还剩3节课,则周一、周二、周五上课,所以天数+6天
  54.      */
  55.      switch(surplusClass)
  56.      {
  57.       case 0:
  58.        surplusDay=surplusDay-1;
  59.        break;
  60.       case 1:
  61.        surplusDay+=2;
  62.        break;
  63.       case 2:
  64.        surplusDay+=3;
  65.        break;
  66.       case 5:
  67.        surplusDay+=6;
  68.        break;
  69.      }
  70.      //要上课所用的总天数
  71.      total=surplusDay+(weekCount*7);
  72.      //设置课程结束当天的日期
  73.      calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+total);
  74.      String strWeek="";
  75.      int week=(calendar.get(Calendar.DAY_OF_WEEK)-1);
  76.      switch(week)
  77.      {
  78.       case 1:
  79.        strWeek="一";
  80.        break;
  81.       case 2:
  82.        strWeek="二";
  83.        break;
  84.       case 3:
  85.           strWeek="三";
  86.           break;
  87.          case 4:
  88.           strWeek="四";
  89.           break;
  90.          case 5:
  91.           strWeek="五";
  92.           break;
  93.          case 6:
  94.           strWeek="六";
  95.           break;
  96.       case 7:
  97.        strWeek="日";
  98.        break;
  99.      }
  100.      //如果取整后剩下的课程数为零,直接取周五的日期
  101.      System.out.println("距离本学期结束还有 "+total+" 天,日期为:"+calendar.get(Calendar.YEAR)+"-"+(calendar.get(Calendar.MONTH)+1)+"-"+calendar.get(Calendar.DATE)+",星期"+strWeek);
  102.     }
  103. }


上述代码首先使用 Calendar.getlnstance() 创建了一个 Calendar 实例,并通过 Calendar 类的 DAY_OF_WEEK 常量获取了今天的星期,若今天为星期一、星期二、星期五中的任意一天,则上课的次数加 1。获取上课所需要的周数以及剩下的次数和所需要的天数。最后设置课程结束后当前的日期,并获取当天的星期。

运行程序,该程序的输出结果如下:

距离本学期结束还有 18 天,日期为:2018-11-2,星期五
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值