2009-11-28 2 views
1

У меня возникают проблемы с попыткой написать правильный код, чтобы проверить, содержит ли строка с клавиатуры правильную дату с правильным количеством месяцев, дней для каждого конкретного месяца и формата мм/dd/yyyy с настройками для високосных годов здесь - это то, что я сделал до сих пор. Я не думаю, что я даже близко, но любая помощь будет очень признательна. Заранее спасиботест, если введенная строка клавиатуры имеет действительную дату и формат

/* read a date from a string from the keyboard to determine if date is in mm/dd/yyyy format. 

*/ 
import java.util.Scanner; 

public class DateFormat 

{ 

public static void main(String [ ] args) 

{ 

    Scanner inp = new Scanner(System.in); 

    System.out.println("Enter the date in mm/dd/yyyy format. "); 

    int mm; 

    int dd; 

    int yy; 

    int date = inp.nextInt(); 

    boolean isLeapYear; 

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

      System.out.println(date + " is not valid month must be between 1 and 12."); 
     if ((mm = 4) && (dd <=30)) 
      System.out.println(date + " is a valid date."); 
      } 
       else 
        System.out.println(date + " is not valid date must have 30 or less days. "); 
     if (date = mm + "/" + dd + "/" + yy); 
      System.out.println(date + " is a valid date format. "); 
     } 
     else{ 
      System.out.println(date + " is not valid must be in dd/mm/yyyy format."); 

      if (yy %100 ==0) { 
      if (yy % 400 ==0){ 
       isLeapYear = true; 
      }  
      else{ 
       isLeapYear = false; 
      } 
     } 
     else{ 
      if (yy %4 ==0){ 
      isLeapYear = true; 
      } 
      else{ 
      isLeapYear = false; 

      if (isLeapYear) 
      if ((mm ==2) && (dd <= 29)) 
      System.out.println(date + " is a valid date."); 
      } 
      else{ 
       System.out.println(date + "is not valid month must have 29 days or less."); 
      if ((mm ==2) && (dd<=28)) 
       System.out.println(date + " is a valid date."); 
      } 
      else{ 
       System.out.println(date + "is not valid must have 28 days or less. "); 

ответ

4

Я думаю, что это будет полезно: http://www.javadb.com/check-if-a-string-is-a-valid-date

В принципе, вы на самом деле не нужно писать код, чтобы проверить, является ли дата. Например, вы можете использовать класс SimpleDataFormat из пакета java.text.

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    System.out.print("Valid? " + isValidDate(scanner.nextLine())); 
} 

private boolean isValidDate(String inDate) { 

    if (inDate == null) 
     return false; 

    //set the format to use as a constructor argument 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 

    if (inDate.trim().length() != dateFormat.toPattern().length()) 
     return false; 

    dateFormat.setLenient(false); 

    try { 
     //parse the inDate parameter 
     dateFormat.parse(inDate.trim()); 
    } 
    catch (ParseException pe) { 
     return false; 
    } 
    return true; 
    }