[Java] 验证身份证 →→→→→进入此内容的聊天室

来自 , 2020-10-10, 写在 Java, 查看 139 次.
URL http://www.code666.cn/view/7810ccd4
  1. /**
  2.  * 身份证验证
  3.  * @author Administrator
  4.  *
  5.  */
  6. public class IDCard {
  7.      
  8.     private final static int[] FACTOR = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
  9.      
  10.     /**
  11.      * 计算前17位身份证号乘以系数后的总和
  12.      * @param id17    前17位身份证号
  13.      * @return
  14.      */
  15.     private static int sumFactor(String id17) {
  16.         if(id17==null || id17.trim().equals("")) {
  17.             return -1; //输入的身份证为空
  18.         }
  19.         int len = id17.length();
  20.         if(len!=17) {
  21.             return -3; //输入的身份证号码不为17位
  22.         }
  23.         int sum = 0;
  24.         for(int i=0; i<len; i++) {
  25.             sum += FACTOR[i] * Integer.parseInt(String.valueOf(id17.charAt(i)));
  26.         }
  27.         return sum;
  28.     }
  29.      
  30.     /**
  31.      * 根据前17位身份证号,算出第18位的数字
  32.      * @param id17
  33.      * @return
  34.      */
  35.     public static String getLastNumOfID(String id17) {
  36.         int sum = sumFactor(id17);
  37.         String res = "";
  38.         if(sum==-1) {
  39.             return "输入的身份证为空";
  40.         }else if(sum==-3) {
  41.             return "输入的身份证号码不为17位";
  42.         }else {
  43.             int mod = sum % 11;
  44.             switch(mod) {
  45.             case 0:
  46.                 res = "1";
  47.                 break;
  48.             case 1:
  49.                 res = "0";
  50.                 break;
  51.             case 2:
  52.                 res = "X";
  53.                 break;
  54.             case 3:
  55.                 res = "9";
  56.                 break;
  57.             case 4:
  58.                 res = "8";
  59.                 break;
  60.             case 5:
  61.                 res = "7";
  62.                 break;
  63.             case 6:
  64.                 res = "6";
  65.                 break;
  66.             case 7:
  67.                 res = "5";
  68.                 break;
  69.             case 8:
  70.                 res = "4";
  71.                 break;
  72.             case 9:
  73.                 res = "3";
  74.                 break;
  75.             case 10:
  76.                 res = "2";
  77.                 break;
  78.             default:
  79.                 break;
  80.             }
  81.         }
  82.         return res;
  83.     }
  84.  
  85.     /**
  86.      * 判断输入的身份证是否合法
  87.      * @param idNum 18位的身份证号
  88.      * @return
  89.      */
  90.     public static boolean isCorrectID(String idNum) {
  91.         boolean flag = false;
  92.         if(idNum==null || idNum.trim().length()!=18) {
  93.             return flag;
  94.         }
  95.         String last = getLastNumOfID(idNum.substring(0, idNum.length()-1));
  96.         if(last.equals(String.valueOf(idNum.charAt(idNum.length()-1)))) {
  97.             flag = true;
  98.         }
  99.         return flag;
  100.     }
  101.      
  102.     public static void main(String[] args) {
  103.         System.out.println(getLastNumOfID("36232319910420171"));
  104.         System.out.println(isCorrectID("362323199104201719"));
  105.     }
  106. }

回复 " 验证身份证"

这儿你可以回复上面这条便签

captcha