3 回答

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
您需要在讀取輸入后對(duì)其進(jìn)行處理。正則表達(dá)式在此任務(wù)中非常有效。 將檢查用戶提供的字符串是否為 DD/MM/YYYY。^\\d{2}/\\d{2}/\\d{4}$
因此,您可以按如下方式比較用戶輸入:
if(userStr.matches("^\\d{2}/\\d{2}/\\d{4}$")){
//Do stuff if input is good
}else{
//Do stuff if input is bad
}

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果這對(duì)您有幫助,這是整個(gè)程序。這還會(huì)使用 DateTimeFormatter 驗(yàn)證日期。因此,如果用戶輸入 ,它將失敗。32/01/2000
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Scanner;
public class DateOfBirth {
public static void main(String[] args) {
System.out.println("Please enter your DOB");
Scanner myScanner = new Scanner(System.in);
String input = myScanner.next();
while (!validDate(input)) {
System.out.println("ERROR: Invalid date. Please enter your DOB");
input = myScanner.next();
}
myScanner.close();
}
private static boolean validDate(String input) {
try {
DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate.parse(input, inputFormat);
} catch (DateTimeParseException e) {
return false;
}
return true;
}
}

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
boolean isDOB(String input) {
String[] inputs = input.split("/");
if(inputs.length!=3)
return false;
int days = Integer.parseInt(inputs[0]);
int month = Integer.parseInt(inputs[1]);
if(days>31 || month>12 || inputs[2].length()!=4) {
return false;
}
return true;
}
添加回答
舉報(bào)