gpt4 book ai didi

java - java中的日期增量

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:39 25 4
gpt4 key购买 nike

所以我必须制作一个java程序,它将从用户输入的日期开始递增并打印每个日期。我无法让它实际打印增量。我有什么错呢。我已经上交了到期后的内容,但仍然想解决问题。我也很想使用 JOptionPane,但我对此很不擅长。这是我第一次。

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

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

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

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

我的代码:

//date.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());
}
}

}

最佳答案

据我了解,您会得到 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());
}
}

关于java - java中的日期增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26961587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com