Java 验证身份证号码是否正确

时间:2022-05-30 11:13:54
package com.kzz;
/** * * @ClassName TestId * @author 作者:马瑞富 * @version 0.1 * @date 创建时间:2015年2月29日下午10:41:08 * @Description : * 验证身份证号码是否正确! */
public class TestId {

    /** * @param args String */
    public static void main(String[] args) {
        String str ="230231199011024913";
        System.out.println(getValidIdCard(str));

    }
    private static boolean getValidIdCard(String cardid){
        String ls_id = cardid;
        if(ls_id.length() != 18)
        {
            return false;
        }
        char[] l_id = ls_id.toCharArray();
        int l_jyw = 0;
        int[] wi = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
        char[] ai= new char[]{'1','0','X','9','8','7','6','5','4','3','2'};
        for(int i =0 ; i < 17; i++)
        {
            if(l_id[i] < '0' || l_id[i] > '9')
            {
                return false;
            }
            l_jyw += (l_id[i] -'0')*wi[i];
        }
        l_jyw = l_jyw % 11;
        if(ai[l_jyw] != l_id[17])
        {
            return false;
        }
        return true;
    }
}