Java编程题小练习(初级):身份证简单信息判断
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位");
}
}
}