身份证第十八位要符合如下算法:
返回值类型为boolean,如果最后位一位数符合算法则返回true ,否则返回false。
private Boolean checkIdNoIsAlgorithm(String idNo){
Character lastId = null;
int[] weightArray = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//权数数组
String vCode = "10X98765432";//校验码字符串
int sumNum = 0;//前17为乘以权然后求和得到的数
//循环乘以权,再求和
for(int i=0;i<17;i++) {
int index = Integer.parseInt(idNo.charAt(i)+"");
sumNum = sumNum +index*weightArray[i];//乘以权数,再求和
}
int modNum = sumNum%11;//求模
lastId = vCode.charAt(modNum);//从验证码中找出对应的数
String lastId1=lastId.toString();
String lastNum=idNo.substring(17,18);
if(lastId1.equals(lastNum)) {
return true;
}else {
return false;
}
}