身份证基本规则验证

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));
		
	}
}

 

猜你喜欢

转载自itace.iteye.com/blog/1942642