1. 程式人生 > 其它 >如何用Java實現判斷這一天是這一年中的第幾天

如何用Java實現判斷這一天是這一年中的第幾天

技術標籤:javaswitch程式語言

最近在學習Java語言,和python一樣,都是面向物件的語音。在學習了基本的變數和資料型別、運算子、流程控制語句後,就可以實現一些有趣的功能。例如,告訴你今天是2020年10月25號,你能告訴別人該天是這一年中的第幾天嘛?接下來,小編帶大家用Java實現這個功能。
首先,要分析年份是不是閏年,那麼如何判斷閏年呢?

  1. 年份能被4整除且不能被100整除;
  2. 年份能被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。