校驗身份證是否正確
阿新 • • 發佈:2018-12-02
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; } }