public static void main(String[] args) { System.out.println("请输入你的身份证号:"); // 创建键盘输入 String IDScan = new Scanner(System.in).nextLine(); // 对应省份,截取字符串前两个字符 String address = IDScan.substring(0, 2); String[] province = {"11北京市", "12天津市", "13河北省", "14山西省", "15内蒙古自治区", "21辽宁省", "22吉林省", "23黑龙江省", "31上海市", "32江苏省", "33浙江省", "34安徽省", "35福建省", "36江西省", "37山东省", "41河南省", "42湖北省", "43湖南省", "44广东省", "45广西壮族自治区", "46海南省", "50重庆市", "51四川省", "52贵州省", "53云南省", "54西藏自治区", "61陕西省", "62甘肃省", "63青海省", "64宁夏回族自治区", "65新疆维吾尔自治区", "71台湾省", "81香港特别行政区", "82澳门特别行政区"}; // 遍历province为:IDs,根据IDs包含有身份证前两位(address)的字符串,利用substring(2,IDs.length())提取出需要的字符串 for (String IDs : province) { if (IDs.contains(address)) { System.out.println(IDs.substring(2, IDs.length()) + ""); } } // 性别gender,得出身份证倒数第二位数字进行判断男女 String gender = IDScan.substring(IDScan.length() - 2, IDScan.length() - 1); if (Integer.parseInt(gender) % 2 == 1) { gender = "男"; } else { gender = "女"; } System.out.print(gender + ""); // 出生年月日birthday & 生肖属相 zodiacSign String birthday = IDScan.substring(6, 14); // 截取字符串,转换成整型 int year = Integer.parseInt(birthday.substring(0, 4)); int month = Integer.parseInt(birthday.substring(4, 6)); int day = Integer.parseInt(birthday.substring(6)); // 创建数组存储12生肖 利用年份对12取余找到对应的索引 输出生肖属相 String[] zodiacSign = {"猴", "鸡", "狗", "猪", "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊"}; System.out.println("属" + zodiacSign[year % 12]); // 获取当前系统时间(从1970年至今)减去出生年份 得出当前的年龄 int age = (int) (System.currentTimeMillis() / 1000 / 60 / 60 / 24 / 365 - year + 1970); System.out.print(age + "岁"); System.out.println("出生日期:" + year + "年" + month + "月" + day + "日"); }
从身份证号里可以解析出出生地,年月日,性别及年龄
于 2022-10-20 14:03:24 首次发布