我正在用Java编写一个程序来接受和验证根据公历的日期。我的公共布尔setDate(String aDate)函数为一个不正确的条目是假设更改布尔goodDate变量为false。该变量假设在调用时告诉toString函数输出“Invalid Entry”,但它不会。我的公共布尔setDate(int d,int m,int y)函数工作正常。我只将问题部分作为一段代码。由于Java中的海关toString没有给出所需的输出和抛出错误
public boolean setDate(int day, int month, int year){
// If 1 <= day <= 31, 1 <= month <= 12, and 0 <= year <= 9999 & the day match with the month
// then set object to this date and return true
// Otherwise,return false (and do nothing)
boolean correct = isTrueDate(day, month, year);
if(correct){
this.day = day;
this.month = month;
this.year = year;
return true;
}else{
goodDate = false;
return false;
}
//return false;
}
public boolean setDate(String aDate){
// If aDate is of the form "dd/mm/yyyy" or "d/mm/yyyy"
// Then set the object to this date and return true.
// Otherwise, return false (and do nothing)
Date d = new Date(aDate);
boolean correct = isTrueDate(d.day, d.month, d.year);
if(correct){
this.day = d.day;
this.month = d.month;
this.year = d.year;
return true;
}else{
goodDate = false;
return false;
}
}
public String toString(){
// outputs a String of the form "dd/mm/yyyy"
// where dd must be 2 digits (with leading zero if needed)
// mm must be 2 digits (with leading zero if needed)
// yyyy must be 4 digits (with leading zeros if needed)
String day1;
String month1;
String year1;
if(day<10){
day1 = "0" + Integer.toString(this.day);
} else{
day1 = Integer.toString(this.day);
}
if(month<10){
month1 = "0" + Integer.toString(this.month);
} else{
month1 = Integer.toString(this.month);
}
if(year<10){
year1 = "00" + Integer.toString(this.year);
} else{
year1 = Integer.toString(this.year);
}
if(goodDate){
return day1 +"/" +month1 +"/" + year1;
}else{
goodDate = true;
return "Invalid Entry";
}
}
谢谢