如何用Java實現判斷這一天是這一年中的第幾天
阿新 • • 發佈:2021-02-01
最近在學習Java語言,和python一樣,都是面向物件的語音。在學習了基本的變數和資料型別、運算子、流程控制語句後,就可以實現一些有趣的功能。例如,告訴你今天是2020年10月25號,你能告訴別人該天是這一年中的第幾天嘛?接下來,小編帶大家用Java實現這個功能。
首先,要分析年份是不是閏年,那麼如何判斷閏年呢?
- 年份能被4整除且不能被100整除;
- 年份能被400整除;
上述條件滿足一個即可,也即是或的關係。
其次,累加這個月之前的每個月的天數 再加上該月的天數,是不是就達到我們的目的了?
舉個栗子,假設現在是2020年10月25日,那麼是不是把1-9月份的天數加起來,再加上這個月的25天,就是最後的結果?(閏年的作用在於判斷2月份是28天還是29天)
分析結果發現,使用switch case結構不帶break時,可以實現這樣的功能。程式碼結構如下:
/* 提示使用者輸入年月日資訊,判斷這一天是這一年中的第幾天並列印。 */ import java.util.Scanner; public class judgeYear{ public static void main(String[] args){ // 1. 提示使用者輸入年月日資訊 System.out.println("請輸入年月日資訊:"); Scanner sc = new Scanner(System.in); int year = sc.nextInt(); int month = sc.nextInt(); int day = sc.nextInt(); //System.out.println("year"+year+"month"+month+"day"+day); int sumDays = 0; switch(month){ case 12: sumDays+=30; //11月總天數 case 11: sumDays+=31; //10月總天數 case 10: sumDays+=30; //9月總天數 case 9: sumDays+=31; //8月總天數 case 8: sumDays+=31; //7月總天數 case 7: sumDays+=30; //6月總天數 case 6: sumDays+=31; //5月總天數 case 5: sumDays+=30; //4月總天數 case 4: sumDays+=31; //3月總天數 case 3: if((0==year%4 && 0!= year%100)||(0==year%400)){ sumDays+=29; //2月總天數 }else{ sumDays+=28; } case 2: sumDays+=31; //1月天數 case 1: sumDays+=day; //當月天數 } System.out.println("這一天是這一年中的第"+sumDays+"天"); } }
編譯、執行程式碼效果如下:
可能有的小夥伴會對switch case這裡比較迷糊,我給分析下,假設輸入的日期是10 25,那麼switch分支結構就會去匹配case 10,即將9月的天數累加到事先宣告的變數裡,因為沒有break語句,所以,switch分支結構會繼續向下執行case 9、case 8,直到case 1。