定義一個採用三個整數值(一個月,一天和一年)作爲參數的Java方法,並返回當年的那一天的數字(1到365之間的整數或366閏年)。你 方法應具有以下標題: 公共靜態INT daynum在(INT月,日整型,INT年) 要計算天數給定日期,使用以下公式:日期計算Java分配
一個。 dayNum = 31 *(month - 1)+ day
b。如果月份在二月(2)之後,則從dayNum減去(4 *月+23)/ 10。
c。如果年份是閏年並且日期在2月29日之後,則將1添加到dayNum。例如,考慮2000年3月2日。dayNum是31 *(3-1)+2或64. 3月在 2月之後,所以我們減去(4 * 3-23)/ 10或35/10或3(記住使用整數除法,其中 截斷餘數)。這給了我們一天的數字61.然而,2000年是閏年,而3月2日的 在2月29日之後,所以我們給dayNum加1。我們的最終答案告訴我們,2000年3月2日, 是今年的第62天。
當我測試這種方法時,我總是收到不準確的結果。如果我進入2000年3月2日它告訴我它的第64天,如果我進入第29天,它告訴我它是第57天。任何對我的代碼的修改,與我的錯誤分配和解釋的規範一起工作,將不勝感激。
public static int dayNum (int month, int day, int year)
{
int dayNum;
dayNum = 31 * (month - 1) + day;
if(month==2)
{
dayNum = dayNum - (4 * month + 23)/10;
if(((year % 4==0 || year % 400 == 0 && (year % 100 != 0)))&&(month>2))
{
dayNum= dayNum + 1;
}
}
return dayNum;
* 「三月來月後,」 *後,但你的'if'語句只檢查二月? – MadProgrammer
我不知道這是否有幫助,但部分b有(4 * 3 + 23)和c後有(4 * 3-23) – michaelp
這不是失敗的原因 - 但你的閏年表達式是錯誤。 –