public class IDCard {
/**
* 17位奇数男,偶数女,15,16,17随机,18位算出来的
*/
private static final String ss = "";
//第18位校验码
private static final String[]v18 = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
//加权因子--7,9,10,5,8,4,2,1,6,3循环
private static final int[] params = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
private static Map<String, String> cityCodes = new HashMap<String, String>();
public static void init(){
cityCodes.put("11", "北京");
cityCodes.put("12", "天津");
cityCodes.put("13", "河北");
cityCodes.put("14", "山西");
cityCodes.put("15", "内蒙古");
cityCodes.put("21", "辽宁");
cityCodes.put("22", "吉林");
cityCodes.put("23", "黑龙江");
cityCodes.put("31", "上海");
cityCodes.put("32", "江苏");
cityCodes.put("33", "浙江");
cityCodes.put("34", "安徽");
cityCodes.put("35", "福建");
cityCodes.put("36", "江西");
cityCodes.put("37", "山东");
cityCodes.put("41", "河南");
cityCodes.put("42", "湖北");
cityCodes.put("43", "湖南");
cityCodes.put("44", "广东");
cityCodes.put("45", "广西");
cityCodes.put("46", "海南");
cityCodes.put("50", "重庆");
cityCodes.put("51", "四川");
cityCodes.put("52", "贵州");
cityCodes.put("53", "云南");
cityCodes.put("54", "西藏");
cityCodes.put("61", "陕西");
cityCodes.put("62", "甘肃");
cityCodes.put("63", "青海");
cityCodes.put("64", "宁夏");
cityCodes.put("65", "新疆");
cityCodes.put("71", "台湾");
cityCodes.put("81", "香港");
cityCodes.put("82", "澳门");
cityCodes.put("91", "国外");
}
public static boolean verify(String idcard){
String pre17=idcard.substring(0, 17);
char[] c17 = pre17.toCharArray();
int sum = 0;
for (int i = 0; i < c17.length; i++) {
int c = Character.getNumericValue(c17[i]);
int p = params[i];
sum+=c*p;
}
int a = sum%11;
if(a==2){//字母
}else {//数字
}
String last_v=v18[a];
System.out.println(last_v);
return last_v.equals(idcard.charAt(17)+"");
}
public static void main(String[] args) {
String idcard = "110203199001231238";
System.out.println(verify(idcard));
}
}