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);
    }
   
posted @ 2008-01-29 10:11  简单飞扬-  阅读(1088)  评论(0编辑  收藏  举报