1. 程式人生 > 其它 >java 身份證號校驗

java 身份證號校驗

建立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);
    }

}