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

Filed under:
|
|
|

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

Related posts about java

Related posts about date