用Java从键盘读入18位号码提取此人出生日期输出如下格式:***年***月***日。当输入身份证号不是18位时抛出IdException异常。程序运行示例:输入:440823200209051785,输出:2002年09月05日
时间: 2024-07-15 10:00:48 浏览: 97
在Java中,你可以使用正则表达式来验证身份证号码的长度,然后使用Java的日期时间处理库java.time
来解析出生日期。以下是一个简单的Java程序示例,实现了这个功能:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.InputMismatchException;
import java.util.Scanner;
public class IdReader {
private static final String ID_PATTERN = "(\\d{6})(18|19|20)?\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])";
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入18位身份证号码:");
String idNumber = scanner.nextLine();
try {
if (!idNumber.matches(ID_PATTERN)) {
throw new IdException("输入的身份证号码不是18位");
}
int year = Integer.parseInt(idNumber.substring(6, 10));
int month = Integer.parseInt(idNumber.substring(10, 12));
int day = Integer.parseInt(idNumber.substring(12, 14));
LocalDate birthDate = LocalDate.of(year, month, day);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
System.out.println("出生日期: " + birthDate.format(formatter));
} catch (NumberFormatException e) {
throw new IdException("输入的身份证号码格式错误");
} catch (IdException e) {
System.err.println(e.getMessage());
}
}
}
class IdException extends RuntimeException {
public IdException(String message) {
super(message);
}
}
相关推荐


















