首頁 > 其他

Java程式判斷某一年的某個月有多少天

2019-12-10 16:37:55

要求是這樣,提示要求輸入一串整數位符的字串(YYYYMM)作為一個檢視的年份和月份,判斷一下這個月有多少個自然日,也即多少天。

如果數位的字串超出限制或不合法,則輸出錯誤提示,並提示重新輸入,直到正確並計算結果。


1

第一個要考慮的問題,如何判斷月份。

我們會用一個switch語句區分大小月:

一三五七八十臘,三十一天永不差。

剩下的除了二月份需要判斷平閏年之外都是三十天。

如圖:


2

第二要考慮的問題,就是怎麼判斷平閏年。

一個年份數可以被100整除的話,如果同時也可以被4整除才是閏年,否則的話ta是平年。

一個年份數不能被100整除的話,如果ta此時可以被4整除也是閏年,否則的話ta是平年。

如圖:


3

接下來,如果獲得一個年份和月份的數位呢?

這是我們今天的重頭戲。

我們需要做許多判斷,這裡,我們分很多步驟來詳述。


4

獲取輸入引數,這裡用Scanner類的非靜態nextInt()方法。

Scanner sc = new Scanner(System.in);

int number = sc.nextInt();


5

但是,如果輸入的是字母,或者位數不足,不符合YYYYMM格式,那不就麻煩了?所以,我們還需要加以判斷。

這裡就不能直接從scanner裡面獲取數位了,我們要獲取的是字串,

Scanner sc = new Scanner(System.in);

String str = sc.nextLine();

然後用正規表示式判斷一下。

if (!str.matches("^[1-9]{1}[0-9]{5}$")) {

   System.out.println("Not an integer number! Input again:");

}


6

上一步驟中的正則我們偷了一點兒小懶,是為了讓大家更容易理解。

所以,這裡我們還缺少對月份的判斷。很簡單,如圖:


7

最後,我們寫一個main方法測試一下,看看是否是咱預期的效果。String number = scannerNumber();int year = Integer.parseInt(number.substring(0, 4));int month = Integer.parseInt(number.substring(4));System.out.println("this is month has " + daysOfThisMonth(year, month));

IT145.com E-mail:sddin#qq.com