JAVA验证身份证号码

用JAVA类验证身份证号码

public static void check(String cid) {

String[] aCity = new String[] { null, null, null, null, null, null, null,

null, null, null, null, "北京", "天津", "河北", "山西", "内蒙古", null, null, null,

null, null, "辽宁", "吉林", "黑龙江", null, null, null, null, null, null, null,

"上海", "江苏", "浙江", "安微", "福建", "江西", "山东", null, null, null, "河南", "湖北",

"湖南", "广东", "广西", "海南", null, null, null, "重庆", "四川", "贵州", "云南", "西藏",

null, null, null, null, null, null, "陕西", "甘肃", "青海", "宁夏", "新疆", null,

null, null, null, null, "台湾", null, null, null, null, null, null, null,

null, null, "香港", "澳门", null, null, null, null, null, null, null, null,

"国外" };

if(aCity[Integer.parseInt(cid.substring(0, 2))] == null) {

System.err.println("省级地区号码不存在");

}else{

System.err.println("此身份证注册地区为:"+aCity[Integer.parseInt(cid.substring(0, 2))]);

}

int sum = 1;

for (int k = 0; k < cid.length() - 1; k++) {

// 加权因子常数

int[] i = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };

sum += (Integer.parseInt(cid.substring(k,k+1))) * i[k];

}

// 校验码常数

String s = "210X9876543";

String jiaoyan = s.substring(sum % 11, (sum % 11 + 1));

if (cid.substring(17).equals(jiaoyan))

System.err.println("身份证号码正确!");

else System.err.println("校验码错误!");

}

public static void main(String[] args) {

String lixin="111111111188888888";

check( lixin);

}