3 回答
TA贡献1998条经验 获得超6个赞
您需要在读取输入后对其进行处理。正则表达式在此任务中非常有效。 将检查用户提供的字符串是否为 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贡献1824条经验 获得超8个赞
如果这对您有帮助,这是整个程序。这还会使用 DateTimeFormatter 验证日期。因此,如果用户输入 ,它将失败。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贡献1790条经验 获得超9个赞
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;
}
添加回答
举报