2014-10-01 90 views
-3

我想知道我的代碼中我的錯誤是什麼,我早先編碼,並有問題測試它或它不完整,我想添加月份二月特定的日子其中有28天(閏年)27天如何添加日期與二月閏年的日期或不

public void addDays(int x) { 

    day = day + x;  
    if (day > 31) {  
     day = day - 31; 
     addMonths(1); 

    } else if (month == 2 && ((year % 400 == 0) || year % 4 == 0)) { 
     day = day - 29; 
     addMonths(1); 

    } 

添加天包個月,

添加天包裝二月非閏年,

添加天包裝了二月閏年,

注意到我已經在另一種方法以及代碼中的其他方法中定義了日,月和年的變量,並且它們完美地工作。只是有問題增加包裝二月閏年或不 謝謝。

P.S:由於分配要求,我使用這些特定的方法和類,否則我會使用Calender類。

+3

你爲什麼不簡化你的生活,並用'java.util.Calendar'呢? – Mena 2014-10-01 12:32:40

+0

這是java還是javascript? – vikingsteve 2014-10-01 12:33:57

+0

聽起來像Java,在javascript中沒有「public void」 – Claudio 2014-10-01 12:34:20

回答

0

檢查:

import java.util.Arrays; 
import java.util.List; 

public class DaysAdder { 

    int day=1; 
    int month=1; 
    int year=2014; 

    public DaysAdder(int day, int month, int year) { 
     super(); 
     this.day = day; 
     this.month = month; 
     this.year = year; 
    } 

    public void addDays(int x) { 

     day = day + x; 
     if (day > 29 && month == 2 && isLeapYear()) { 
      day = day - 29; 
      addMonths(1); 
     } else if (day > 28 && month == 2 && !isLeapYear()) { 
      day = day - 28; 
      addMonths(1); 
     } else if (day > 30 && !is31dayMonth()) { 
      day = day - 30; 
      addMonths(1); 
     } else if (day > 31 && is31dayMonth()) { 
      day = day - 31; 
      addMonths(1); 
     } 
    } 

    private boolean is31dayMonth() { 
     List<Integer> month31 = Arrays.asList(1,3,5,7,8,10,12); 
     return month31.contains(month); 
    } 

    private boolean isLeapYear() { 
     return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); 
    } 

    private void addMonths(int i) { 
     month = month + i; 
     if (month >= 13) { 
      addYear(1); 
      month = month - 12; 
     } 
    } 

    private void addYear(int i) { 
     year = year + i; 
    } 

    @Override 
    public String toString() { 
     return "DaysAdder [day=" + day + ", month=" + month + ", year=" + year 
       + "]"; 
    } 

    public static void main(String[] args) { 
     DaysAdder daysAdder = new DaysAdder(23, 2, 2016); 
     daysAdder.addDays(7); 
     System.out.println(daysAdder); //DaysAdder [day=1, month=3, year=2016] 
     daysAdder = new DaysAdder(23, 2, 2014); 
     daysAdder.addDays(7); 
     System.out.println(daysAdder); //DaysAdder [day=2, month=3, year=2014] 
    } 
} 
相關問題