/*
*功能:实现一个身份证验证的类。
要求:对身份证进行验证,如果身份证验证成功,则分别显示出生日期、年龄和性别;如果验证不成功,抛出异常。
身份证验证方法: 1、身份证号长度;2、身份证号最后一位为数字或者X(x)
*/
身份证类(实现方法)
class IDCard {
private String IDNumber;
public String getIDNumber() {
return IDNumber;
}
public void setIDNumber(String iDNumber) throws Exception {
if (verify(iDNumber)) {
IDNumber = iDNumber;
} else {
throw new Exception("身份证号码错误!");
}
}
public String getBirth() {
return IDNumber.substring(6, 10) + "年" + IDNumber.substring(10, 12) + "月" + IDNumber.substring(12, 14) + "日";
}
public String getSex() {
if (IDNumber.charAt(17) % 2 == 0) {
return "女";
} else {
return "男";
}
}
public int getAge() {
Calendar c=Calendar.getInstance();
int nowYear=c.get(Calendar.YEAR);
int birthYear=Integer.parseInt(IDNumber.substring(6, 10));
return nowYear-birthYear;
}
public boolean verify(String ID) {
// 1、验证长度
if (ID.length() != 18) {
return false;
}
// 2、前17位位数字,18位数字或者'X'或者'x'
char[] arr = ID.toCharArray();
for (int i = 0; i < arr.length - 1; i++) {
// if(arr[i]<'0' || arr[i]>'9') {
// return false;
// }
if (!Character.isDigit(arr[i])) {
return false;
}
}
if (Character.isDigit(arr[17]) || arr[17] == 'X' || arr[17] == 'x') {
return true;
} else {
return false;
}
}
}
主函数(调用类中的方法)
public class Reweek {
public static void main(String[] args) {
IDCard card = new IDCard();
try {
card.setIDNumber("2308022000010113151");//身份证随便输的
System.out.println("年龄:"+card.getAge());
System.out.println("出生日期:"+card.getBirth());
System.out.println("性别:"+card.getSex());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}