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 ");
}
}
}
}
[檢查日期的有效性]的可能的複製(http://stackoverflow.com/questions/4528047/checking-the-validity-一個日期) –
不重複。這個鏈接問題是實用的,而這個問題是練習編碼整個算法的家庭作業。 –