校验身份证是否正确

package com.gc.action;

public class Test {

    public static void main(String[] args) {
        String str ="230231199011024";
        System.out.println(getValidIdCard(str));
    }

    public static boolean getValidIdCard(String card){
        if(card.length() != 18 &&card.length() != 15)
        {
            return false;
        }
        //身份证15位的做校验
        if(card.length() == 15){
            for (int i = card.length();--i>=0;){  
                if (!Character.isDigit(card.charAt(i))){
                    return false;
             }
            }
        }
        //身份证18位的做校验
        if(card.length()==18){
            char[] l_id = card.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;
    }
}

猜你喜欢

转载自blog.csdn.net/yingmengxuepingbao/article/details/83305283