classDate{privateintyear;privateintmonth;privateintday;publicDate(intyear,intmonth,intday){setDate(year,month,day);}publicvoidsetDate(intyear,intmonth,intday){this.month=...
class Date {
private int year;
private int month;
private int day;
public Date(int year,int month,int day){
setDate(year,month,day);
}
public void setDate(int year,int month,int day){
this.month=checkMonth(month);
this.day=checkDay(day);
this.year=year;
}
public String getDate(){
return year+"/"+month+"/"+day;
}
private int checkMonth(int month){
if(month>12||month<1)
{
System.out.println("invoid day ("+month+")");
month=1;
System.out.println("Auto set to 1");
}
return month;
}
private int checkDay(int day){
int dayperMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if((year%4==0&&year%100!=0)||year%400==0)
{
if(day>29||day<1)
{System.out.println("invoid day ("+day+")");
day=1;
System.out.println("Auto set to 1");
}
}
else
if(day>dayperMonth[month]||day<1)
{System.out.println("invoid day ("+day+")");
day=1;
System.out.println("Auto set to 1");
}
return day;
}
}
public class TestDate{
public static void main(String[] args){
Date a=new Date(1997,13,4);
Date b=new Date(1999,2,29);
Date c=new Date(2000,2,29);
System.out.println(a.getDate());
System.out.println(b.getDate());
System.out.println(c.getDate());
}
}
程序如上,在checkDay里,year貌似无法传递到,就是0!这是为什么呢?有什么解决方法?
展开