假设,每周曰到周六为整的一周,每周从周日开始算起。其中每周的周一、周二、周五需要去学校上课,总共再上9天本学期就结束了。编写 Java
程序,计算上完 9 次课后的日期及星期,以及从当天起到本学期结束总共需要度过的天数。具体的程序代码如下:
-
import java.util.Calendar;
-
-
public class Test14 {
-
-
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);
-
-
-
-
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);
-
-
-
-
-
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);
-
}
-
}
上述代码首先使用 Calendar.getlnstance() 创建了一个 Calendar 实例,并通过 Calendar 类的 DAY_OF_WEEK 常量获取了今天的星期,若今天为星期一、星期二、星期五中的任意一天,则上课的次数加 1。获取上课所需要的周数以及剩下的次数和所需要的天数。最后设置课程结束后当前的日期,并获取当天的星期。 运行程序,该程序的输出结果如下:
距离本学期结束还有 19 天,日期为:2019-10-15,星期二