2014-10-01 84 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] 
    } 
} 
相关问题