用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

验证身份证

2015-08-31 作者: 西门春雪举报

[java]代码库

/**
 * 身份证验证
 * @author Administrator
 *
 */
public class IDCard {
     
    private final static int[] FACTOR = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
     
    /**
     * 计算前17位身份证号乘以系数后的总和
     * @param id17    前17位身份证号
     * @return
     */
    private static int sumFactor(String id17) {
        if(id17==null || id17.trim().equals("")) {
            return -1; //输入的身份证为空
        }
        int len = id17.length();
        if(len!=17) {
            return -3; //输入的身份证号码不为17位
        }
        int sum = 0;
        for(int i=0; i<len; i++) {
            sum += FACTOR[i] * Integer.parseInt(String.valueOf(id17.charAt(i)));
        }
        return sum;
    }
     
    /**
     * 根据前17位身份证号,算出第18位的数字
     * @param id17
     * @return
     */
    public static String getLastNumOfID(String id17) {
        int sum = sumFactor(id17);
        String res = "";
        if(sum==-1) {
            return "输入的身份证为空";
        }else if(sum==-3) {
            return "输入的身份证号码不为17位";
        }else {
            int mod = sum % 11;
            switch(mod) {
            case 0:
                res = "1";
                break;
            case 1:
                res = "0";
                break;
            case 2:
                res = "X";
                break;
            case 3:
                res = "9";
                break;
            case 4:
                res = "8";
                break;
            case 5:
                res = "7";
                break;
            case 6:
                res = "6";
                break;
            case 7:
                res = "5";
                break;
            case 8:
                res = "4";
                break;
            case 9:
                res = "3";
                break;
            case 10:
                res = "2";
                break;
            default:
                break;
            }
        }
        return res;
    }
 
    /**
     * 判断输入的身份证是否合法
     * @param idNum 18位的身份证号
     * @return
     */
    public static boolean isCorrectID(String idNum) {
        boolean flag = false;
        if(idNum==null || idNum.trim().length()!=18) {
            return flag;
        }
        String last = getLastNumOfID(idNum.substring(0, idNum.length()-1));
        if(last.equals(String.valueOf(idNum.charAt(idNum.length()-1)))) {
            flag = true;
        }
        return flag;
    }
     
    public static void main(String[] args) {
        System.out.println(getLastNumOfID("36232319910420171"));
        System.out.println(isCorrectID("362323199104201719"));
    }
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...