Java编程题小练习(初级):身份证简单信息判断

时间:2025-03-27 14:05:28
package com.xingzhao.Test; /** * 题目描述:身份证简单信息判断 * 1.判断长度是不是18位。 * 2.判断是不是纯数字或者前17位是纯数字,最后一位是字母X或x构成 * 3.判断性别 * 4.判断其生日 * 5.判断年份是否合理(身份证年份需要在1900-2021年之间) *37012620010412151X */ import java.util.Scanner; import java.util.regex.Pattern; public class Demo2_3 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("请您输入身份证号"); String a = s.next(); int i = a.length(); String xingBie; int index = 0; //定义错误标志位 //判断长度为18位 if(i == 18) { //判断18位是否全为纯数字 if(Pattern.matches("\\d+", a)==true) { index = 1; }else if(a.substring(17, 18).equals("x")||a.substring(17, 18).equals("X")){ //判断最后一位是字母x或X构成 index = 1; }else { System.out.println("身份证格式错误"); } //判断年份是否合理 if(index==1) { if(Integer.valueOf(a.substring(6,10))>=1900&&Integer.valueOf(a.substring(6,10))<2021) { //判断性别 if(Integer.valueOf(a.substring(16, 17))%2==0) { xingBie = "女士"; }else { xingBie = "先生"; } //输出信息(包括:性别、年龄、生日) System.out.println("您好,尊敬的"+xingBie+"。您今年"+(2021-Integer.valueOf(a.substring(6, 10)))+"岁了,您的生日是"+a.subSequence(10, 12)+"月"+a.subSequence(12, 14)+"日"); }else { System.out.println("年份不合理"); } } }else { System.out.println("长度不为18位"); } } }