java 身份證號校驗
阿新 • • 發佈:2022-12-07
建立CardUtil工具類
public class CardUtil { /** * 驗證身份證真假 * @param carNumber 身份證號 * @return boolean*/ public static boolean isCard(String carNumber) { //判斷輸入身份證號長度是否合法 if (carNumber.length() != 18) { throw new RuntimeException("身份證長度不合法");//不合法 丟擲一個異常 } //校驗身份證真假 int sum = 0; int[] weight = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//將加權因子定義為陣列 //遍歷weight陣列 求身份證前17項係數和 for (int i = 0; i < weight.length; i++) { int n = carNumber.charAt(i) - 48;//獲取 身份證對應數 int w = weight[i]; sum += w * n; } //對11求餘 int index = sum % 11; //校驗碼 String m = "10X98765432"; //獲取身份證最後一位進行比對 return m.charAt(index) == carNumber.charAt(17); } }