java中的日期增量

java中的日期增量,java,eclipse,date,joptionpane,Java,Eclipse,Date,Joptionpane,因此,我必须制作一个java程序,从用户输入的日期开始递增并打印每个日期。我无法让它实际打印增量。我做错了什么。我已经上交了我的东西,因为它是到期的,但仍然想解决问题。我也很想使用JOptionPane,但我在这方面做得很差。这是我第一次 说明: 创建一个名为Date.java的程序来对初始值执行错误检查,例如:字段month、day和year。另外,提供一个方法nextDay(),将日期增加一天。日期对象应始终保持一致状态 编写一个名为DateTest.java的程序,提示用户输入月、日和年作

因此,我必须制作一个java程序,从用户输入的日期开始递增并打印每个日期。我无法让它实际打印增量。我做错了什么。我已经上交了我的东西,因为它是到期的,但仍然想解决问题。我也很想使用JOptionPane,但我在这方面做得很差。这是我第一次

说明: 创建一个名为Date.java的程序来对初始值执行错误检查,例如:字段month、day和year。另外,提供一个方法nextDay(),将日期增加一天。日期对象应始终保持一致状态

编写一个名为DateTest.java的程序,提示用户输入月、日和年作为数值。然后,该程序使用刚才创建的Date类创建一个Date对象,并测试nextDay()方法。这可以在40次迭代的循环中完成:Date对象调用nextDay()方法,并在循环的每次迭代中打印日期。这个循环是为了说明nextDay()方法工作正常。测试以下情况:

递增到下个月,例如,使用日期:2011年2月28日 例如,递增到下一年,使用日期:2011年11月27日 例如,递增到闰年的下一个月,使用日期:2012年2月28日 示例程序输出:

校验增量 日期对象构造函数的日期为2011年11月27日 增加日期:2011年11月28日 增加日期:2011年11月29日 增加日期:2011年11月30日 第31天无效。设置为第1天。 增加日期:2011年12月1日 增加日期:2011年12月2日 ... 增加日期:12/30/2011 增加日期:2011年12月31日 第32天无效。设置为第1天。 增加日期:2012年1月1日 增加日期:2012年1月2日 增加日期:2012年1月3日 增加日期:2012年1月4日 增加日期:2012年1月5日 增加日期:1/6/2012

我的代码:

//java类

import javax.swing.JOptionPane;
import java.util.Scanner;

public class Date 
{
    private int MIN_YEAR = 1990;
    private int MAX_YEAR = 2050;
    private int DEFAULT_YEAR = 2012;
    private int MIN_MONTH = 1;
    private int MAX_MONTH = 12;
    private int DEFAULT_MONTH = 1;
    private int MIN_DAY = 1;
    private int MAX_DAY = 31;
    private int DEFAULT_DAY = 1;
    private int year = 2012;
    private int month = 1;
    private int day = 1;
    private int daysInMonth[] = {31,28,31,30,31,30,31,31,30,31,30,31};


    public Date()
    {
        month = DEFAULT_MONTH;
        day = DEFAULT_DAY;
        year = DEFAULT_YEAR;
    }

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

    public void setYear(int year)
    {
        if(year < MIN_YEAR || year > MAX_YEAR)
        {
            System.out.println("The year entered has to be between" + MIN_YEAR + "-" + MAX_YEAR + ". Try Again!");

        }
        else
        {
            this.year = year;
        }
    }
     public int getYear()
     {
         return year;
     }

     public void setMonth(int month)
     {
         if(month < MIN_MONTH)
         {
             this.month = MIN_MONTH;
         }
         else if(month > MAX_MONTH)
         {
             this.month = MAX_MONTH;
         }
     }

     public int getMonth()
     {
         return month;
     }

     public void setDay(int day)
     {
         if(month < MIN_DAY)
         {
             this.month = MIN_DAY;
         }
         else if(month > MAX_DAY)
         {
             this.month = MAX_DAY;
         }
     }

     public int getDAY()
     {
         return day;
     }

    public void nexyDay()
    {
        int currentMonthMaxDays = daysInMonth[month];
        boolean leapYear = isLeapYear();
        if( day < currentMonthMaxDays)
        {
            day += 1;
        }
        else if(month == 2 && leapYear == true && day == 28)
        {
            day = 29;
        }
        else
        {
            day = 1;
            if(month!= 12)
            {
                month += 1;
            }
            else
            {
                year +=1;
                month = 1;
            }   
        }
    }
        public String toString()
        {
            return month + "/" + day + "/" + year;
        }

        private boolean isLeapYear()
        {
            boolean leapYear = false;
            if(year % 400 == 0)
            {
                leapYear = true;
            }
            else if (year % 4 == 0 && year % 100 != 0)
            {
                leapYear = true;
            }
            return leapYear;


        }

    }



    //my datetest class

import javax.swing.JOptionPane;
import java.util.Scanner;

public class DateTest {

    public static void main(String[] args) 
    {
        Date[] date = new Date[1];
        for (int i = 0; i < date.length; i++) 
        {

            System.out.print("Enter deired Year: ");
            int year = new Scanner(System.in).nextInt();
            System.out.print("Enter deired Month: ");
            int month = new Scanner(System.in).nextInt();
            System.out.print("Enter deired Day: ");
            int day = new Scanner (System.in).nextInt();
            date[i].nextDay(year, month, day);
        }
        for (int i = 0; i < 40; i++) 
        {

            date[i].nextDay();
            System.out.print("Incremented Date:" + date[i].toString());
        }
    }

}
import javax.swing.JOptionPane;
导入java.util.Scanner;
公课日期
{
私家车年数=1990年;
私人int MAX_YEAR=2050;
私人int默认年=2012年;
私有整数最小月=1;
私人整数最大月=12;
private int DEFAULT_MONTH=1;
私用整数最小日=1;
私人int MAX_DAY=31;
私人int默认值_DAY=1;
私人投资年度=2012年;
私家车整月=1;
私人整数日=1;
每月[]的私人国际日{31,28,31,30,31,30,31,31,30,31};
公开日期()
{
月份=默认月份;
天=默认的天;
年份=默认年份;
}
公开日期(整数年、整数月、整数日)
{
本月=月;
今年=年;
this.day=天;
}
公共年(国际年)
{
如果(年<最小年>最大年)
{
System.out.println(“输入的年份必须介于“+MIN\u year+”-“+MAX\u year+”。请重试!”);
}
其他的
{
今年=年;
}
}
公共int getYear()
{
回归年;
}
公共无效设置月(整数月)
{
如果(月<最小月)
{
本月=最小月;
}
否则如果(月>最大月)
{
本月=最大月;
}
}
公共整数getMonth()
{
返回月份;
}
公共无效设定日(整数日)
{
如果(月<分/日)
{
本月=分日;
}
其他情况(月>最长天数)
{
本月=最长天数;
}
}
public int getDAY()
{
回归日;
}
下周日(星期六)公众假期
{
int currentMonthMaxDays=daysInMonth[月];
布尔leapYear=isLeapYear();
如果(日<当前月最大日)
{
日+=1;
}
否则如果(月==2和年==true和日==28)
{
日=29;
}
其他的
{
日=1;
如果(月!=12)
{
月份+=1;
}
其他的
{
年份+=1;
月=1;
}   
}
}
公共字符串toString()
{
返回月份+“/”+天+“/”+年;
}
私有布尔值isLeapYear()
{
布尔年=假;
如果(年份%400==0)
{
闰年=真;
}
否则如果(第%4年==0和第%100年!=0)
{
闰年=真;
}
回归年;
}
}
//我的最新课程
导入javax.swing.JOptionPane;
导入java.util.Scanner;
公共类日期测试{
公共静态void main(字符串[]args)
{
日期[]日期=新日期[1];
对于(int i=0;i
据我所知,您会得到NullPointerException。您忘记用值初始化日期数组。您也可以初始化扫描仪一次

Scanner scanner = new Scanner(System.in); // <== the only scanner initialization.
for (int i = 0; i < date.length; i++) {
    System.out.print("Enter deired Year: ");
    int year = scanner.nextInt();
    System.out.print("Enter deired Month: ");
    int month = scanner.nextInt();
    System.out.print("Enter deired Day: ");
    int day = scanner.nextInt();
    date[i] = new Date(year, month, day); // <== fix initialization.
}
for (int i = 0; i < date.length; i++) { // cycle #1: over all initialized dates
    for (int j = 0; j < 40; i++) {      // cycle #2: 40 repeats for each date
        date[i].nextDay();
        System.out.print("Incremented Date:" + date[i].toString());
    }
}

Scanner Scanner=新的扫描仪(System.in);//有专门的方法Calendar.add()用于此目的,请参见,因为这是您的作业,您是否尝试实施
nextDay()
?我已将其更改为您的示例@ursa,但我在日期上遇到了错误。他们都说“日期不能作为变量来解析”。如何解析此部分?您在方法开头丢失了“Date[]Date=new Date[1];”声明