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

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

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

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

工具/原料

一臺再正常不過的已經配置了java環境的電腦

一款適合自己的開發整合環境,筆者自己用的是eclipse Kepler

活躍的大腦,勤勞的雙手

YYYYMM這個月有多少天?

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

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

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

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

如圖:

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

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

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

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

如圖:

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

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

這是我們今天的重頭戲。

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

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

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

Scanner sc = new Scanner(System.in);

int number = sc.nextInt();

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

但是,如果輸入的是字母,或者位數不足,不符合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:");

}

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

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

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

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

最後,我們寫一個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));

注意事項

注意總結,溫故知新嘛!不要玩一玩就過去了。也別變成和筆者一樣的呆子哦~~

耐心,認真,仔細,嚴謹。

相關問題答案