所以我必須做一個java程序,它將增加和打印每個日期從用戶輸入的日期。我無法實際打印增量。我有什麼錯誤。自從它到期之後,我已經交出了我所擁有的東西,但仍然想要解決問題。我也喜歡使用JOptionPane,但是我對此很不好。這是我第一次。在java中的日期增量
指令: 創建一個名爲Date.java的程序對初始值執行錯誤檢查,例如:字段月份,日期和年份。另外,提供一個nextDay()方法來增加一天。 Date對象應始終保持一致的狀態。
編寫一個名爲DateTest.java的程序,提示用戶輸入月份,日期和年份作爲數字值。這個程序然後使用剛剛創建的Date類創建一個Date對象並測試nextDay()方法。這可以在40次迭代循環中完成:Date對象調用nextDay()方法並在循環的每次迭代期間輸出日期。這個循環是爲了說明nextDay()方法正常工作。測試以下情況:
遞增到下個月,例如,使用日期:2011年2月28日 遞增到明年,例如,使用日期:2011/11/27 遞增到下一個月在一個閏年,例如,使用日期:02/28/2012 示例程序輸出:
檢查增量 Date對象的構造日期2011/11/27 步達成日期:11/28/2011 步達成日期:2011/11/29 增加日期:11/30/2011 第31天無效。設置爲每日1次。 步達成日期:2011/12/1 步達成日期:12/2/2011 ... 步達成日期:2011/12/30 步達成日期:12/31/2011 32天無效。設爲第1天。 遞增日期:2012/1/1 遞增日期: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());
}
}
}
有特殊的方法Calendar.add()用於這一目的,見http://stackoverflow.com/a/1005550/1028256 – Mixaz
因爲這是你的任務,你試圖執行'nextDay()'? –