C語言中文網 目錄

Java計算課程結束的日期

< 上一頁Java日期格式化 Java日期查詢下一頁 >

假設,每周曰到周六為整的一周,每周從周日開始算起。其中每周的周一、周二、周五需要去學校上課,總共再上9天本學期就結束了。編寫 Java 程序,計算上完 9 次課后的日期及星期,以及從當天起到本學期結束總共需要度過的天數。具體的程序代碼如下:
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);
    }
}

上述代碼首先使用 Calendar.getlnstance() 創建了一個 Calendar 實例,并通過 Calendar 類的 DAY_OF_WEEK 常量獲取了今天的星期,若今天為星期一、星期二、星期五中的任意一天,則上課的次數加 1。獲取上課所需要的周數以及剩下的次數和所需要的天數。最后設置課程結束后當前的日期,并獲取當天的星期。

運行程序,該程序的輸出結果如下:
距離本學期結束還有 18 天,日期為:2018-11-2,星期五
< 上一頁Java日期格式化 Java日期查詢下一頁 >

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo