2016-09-23 37 views
-2

import java.util。*;我需要幫助驗證日期在JAVA中有效我已經嘗試了一切,但它只是不能正常工作在這裏我的代碼

公共類DateChecker

這是我的方向:

編寫的Java應用程序,讓用戶輸入一個日期。然後程序將檢查日期以驗證它是否是有效的日期。

首先要求用戶輸入日期,格式爲mm/dd/yyyy。這將作爲字符串輸入,因爲日期包含斜線標記。

輸入日期後,程序應該檢查日期的有效性。如果日期有效,程序應顯示消息「有效日期」。如果日期無效,程序應該顯示消息「Not a valid date」以及一條消息,指出日期無效的原因。

public static void main(String[] args) { 

    Scanner kbd = new Scanner(System.in); 
    System.out.println("Enter a date"); 
    String dateStr = kbd.nextLine(); 

    if(dateStr.length() == 10){ 
     if (dateStr.charAt(2) == '/' && dateStr.charAt(5) == '/'){ 
      String mmStr = dateStr.substring(0, 2); 
      String ddStr = dateStr.substring(3, 5); 
      String yyyyStr = dateStr.substring(6); 

      int mm = Integer.parseInt(mmStr); 
      int dd = Integer.parseInt(ddStr); 
      int yyyy = Integer.parseInt(yyyyStr); 

      if (mm <= 12 && mm >=1){ 

       if (((((mm == 1) && (dd == 31)) || ((mm == 3) && (dd == 31)) || ((mm == 4) && (dd == 30)) || ((mm == 5) && (dd ==31)) || ((mm == 6) && (dd == 30)) || ((mm == 7) && (dd == 31)) || ((mm == 8) && (dd == 31)) || ((mm == 9) && (dd == 30)) || ((mm == 10) && (dd == 31)) || ((mm == 11) && (dd == 30)) || ((mm == 12) && (dd == 31))))) 
       { 
        System.out.println("Vailid date."); 
       } 

       else if (mm == 2){ 
        if ((yyyy%4==0 && yyyy%100!=0) ||yyyy%400==0) 
        { 
        if (dd == 29){ 
         System.out.println("Valid date"); 
        } 
        else { 
         System.out.println("Not a valid date \nDay is not valid"); 
        } 
        } 

        else { 
         if (dd == 28){ 
          System.out.println("Valid date"); 
         } 
         else { 
          System.out.println("Not a valid date \nDay is not valid"); 
         } 
        } 
       } 
       else 
       { 
        System.out.println("Not a valid date \nDay is not valid"); 
       } 
      }else { 
       System.out.println("Not a valid date \nMonth is not valid"); 
      } 
    } 
    else { 
     System.out.println("Not a valid date \nIncorrect format"); 
    } 
     if (dateStr.length() > 10){ 
      System.out.println("Too many characters in the date"); 
     }else { 
      System.out.println("Too few characters in the date "); 

     } 
    } 
} 

}

+0

[檢查日期的有效性]的可能的複製(http://stackoverflow.com/questions/4528047/checking-the-validity-一個日期) –

+0

不重複。這個鏈接問題是實用的,而這個問題是練習編碼整個算法的家庭作業。 –

回答

相關問題