Java计算课程结束的日期
假设,每周曰到周六为整的一周,每周从周日开始算起。其中每周的周一、周二、周五需要去学校上课,总共再上9天本学期就结束了。编写 Java 程序,计算上完 9 次课后的日期及星期,以及从当天起到本学期结束总共需要度过的天数。具体的程序代码如下:
上述代码首先使用 Calendar.getlnstance() 创建了一个 Calendar 实例,并通过 Calendar 类的 DAY_OF_WEEK 常量获取了今天的星期,若今天为星期一、星期二、星期五中的任意,则上课的次数加 1。获取上课所需要的周数以及剩下的次数和所需要的天数。设置课程结束后当前的日期,并获取当天的星期。import java.util.Calendar;
public class Test14 {
// 定义一周所要上课的天数。定义为周一、周二、周五共3天上课
public static final int HAVEClass_OF_WEEK = 3;
// 定义需要上的课次
public static final int COURSENUM = 9;
public static void main(String[] args) {
int weekCount = -1; // 定义上完全部课程需要多少周,取整数
int surplusDay = -1; // 取整后多余的天数
int count = 0; // 获取上了多少次课
int surplusClass = -1; // 取整后所剩的课程数
int total = 0; // 上课所花的时间总数
Calendar calendar = Calendar.getInstance();
// 获取今天是周几
int weekdays = (calendar.get(Calendar.DAY_OF_WEEK) - 1);
/*
* 定义一周中所要上课的天数,若上课则count+1 周一、周二、周五上课 今天是周三,这个星期只有周五上课
*/
switch (weekdays) {
case 0:
case 1: // 上课
count++;
case 2: // 上课
count++;
case 3:
case 4:
case 5: // 上课
count++;
case 6:
break;
}
/*
* 计算今天是周几,如果不是周末,则计算到周六还有几天 (因为周日是一周的开始)
*/
if (0 != weekdays)
surplusDay = 6 - weekdays;
// 获取上课所用多少周,取整
weekCount = (COURSENUM - count) / HAVEClass_OF_WEEK;
// 获取取整后剩下的课程数
surplusClass = (COURSENUM - count) - (weekCount * HAVEClass_OF_WEEK);
/*
* 计算取整周后剩下的次数(从每周日开始算起) 若不剩课程,则日期-1(因为取整后的为周六,不上课) 则计算周五的日期
* 若还剩1节课,肯定是周一上课,所以天数+2天 若还剩2节课,则周一、周二上课,所以天数+3天 若还剩3节课,则周一、周二、周五上课,所以天数+6天
*/
switch (surplusClass) {
case 0:
surplusDay = surplusDay - 1;
break;
case 1:
surplusDay += 2;
break;
case 2:
surplusDay += 3;
break;
case 5:
surplusDay += 6;
break;
}
// 要上课所用的总天数
total = surplusDay + (weekCount * 7);
// 设置课程结束当天的日期
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + total);
String strWeek = "";
int week = (calendar.get(Calendar.DAY_OF_WEEK) - 1);
switch (week) {
case 1:
strWeek = "一";
break;
case 2:
strWeek = "二";
break;
case 3:
strWeek = "三";
break;
case 4:
strWeek = "四";
break;
case 5:
strWeek = "五";
break;
case 6:
strWeek = "六";
break;
case 7:
strWeek = "日";
break;
}
// 如果取整后剩下的课程数为零,直接取周五的日期
System.out.println("距离本学期结束还有 " + total + " 天,日期为:" + calendar.get(Calendar.YEAR) + "-"
+ (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DATE) + ",星期" + strWeek);
}
}
运行程序,该程序的输出结果如下:
距离本学期结束还有 19 天,日期为:2019-10-15,星期二
- 随机文章
- 马尔代夫餐厅命案(马尔代夫游客遇害,犯罪嫌疑人被捕)
- 龙泉马尔代夫拍照(龙泉马尔代夫:打卡必拍的网红之地)
- 春节 马尔代夫 机票(春节去马尔代夫,订机票!)
- 嗯哼 马尔代夫(嗯哼,探索马尔代夫)
- 中印 斯里兰卡 马尔代夫(印度洋岛国联盟成立:斯里兰卡、马尔代夫共谋未来)
- 南宁北湖马尔代夫(南宁北湖有座仿佛马尔代夫的美丽岛屿)
- 安嘎嘎岛马尔代夫(安嘎嘎岛:你梦中的马尔代夫度假胜地)
- 叙利亚踢马尔代夫(叙利亚足球队在友谊赛中战胜马尔代夫)
- 宜昌马尔代夫酒吧(宜昌峡谷水世界开设马尔代夫风情酒吧)
- 马尔代夫首位总统(马尔代夫追悼首位总统,国旗降半旗)
- 卡尼 马尔代夫(卡尼成为马尔代夫新总统)
- 情侣马尔代夫旅行(浪漫之旅:情侣在马尔代夫的梦幻之旅)
- 万豪 金卡 马尔代夫(万豪金卡会员在马尔代夫尽享奢华体验)
- 延误 马尔代夫(马尔代夫航班延误,游客滞留机场)
- 海口东方马尔代夫(海口东方马尔代夫:热带天堂完美体验)
- 梦想酒店马尔代夫(打造梦幻私属酒店,马尔代夫等你来!)
- 渭南马尔代夫温泉(马尔代夫温泉来了!渭南这里开放了!)
- 皇冠假日马尔代夫(皇冠假日马尔代夫:浪漫海岛度假胜地)
- 航拍马尔代夫全集(鸟瞰神秘美景!航拍马尔代夫美丽全景)
- 徐州马尔代夫攻略(徐州游客必看!马尔代夫旅游攻略分享)
- 营口马尔代夫公园(营口市新建的马尔代夫公园向游客开放)
- 邯郸马尔代夫风景(邯郸最美海岛丨马尔代夫风格海滨景观)
- 邢台马尔代夫瀑布(邢台“马尔代夫”瀑布成秘密旅游胜地)
- 盱眙 马尔代夫(盱眙县:马尔代夫爱好者的天堂)
- 携程 马尔代夫(携程推出马尔代夫岛屿住宿预订新方案)
- 马尔代夫下水游泳(马尔代夫浮潜:与海豚同游的惊喜之旅)
- 马尔代夫义工费用(参加马尔代夫义工项目的费用是多少?)
- 途牛旅游马尔代夫(途牛旅游带你探索马尔代夫奢华之旅!)
- 海上旅游马尔代夫(探索马尔代夫海上奇观:畅游旅游胜地)
- 马尔代夫买什么好(马尔代夫购物攻略,买什么物美价廉?)
