Customs toString in Java not giving desired output and throwing error
Posted
by
user2972048
on Stack Overflow
See other posts from Stack Overflow
or by user2972048
Published on 2013-11-09T15:26:44Z
Indexed on
2013/11/10
3:53 UTC
Read the original article
Hit count: 138
I am writing a program in Java to accept and validate dates according to the Gregorian Calendar. My public boolean setDate(String aDate) function for an incorrect entry is suppose to change the boolean goodDate variable to false. That variable is suppose tell the toString function, when called, to output "Invalid Entry" but it does not. My public boolean setDate(int d, int m, int y) function works fine though. I've only included the problem parts as its a long piece of code. Thanks
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";
}
}
Thank you
© Stack Overflow or respective owner