Java计算课程结束的日期

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

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

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

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

距离本学期结束还有 19 天,日期为:2019-10-15,星期二
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦哆啦S梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值