身份證第18位計算

本文計算方式源自 百度百科,根據計算方式,Java計算代碼以下文所示。spa

計算方法

一、將前面的身份證號碼17位數分別乘以不一樣的係數。從第一位到第十七位的係數分別爲:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
二、將這17位數字和係數相乘的結果相加。
三、用加出來和除以11,看餘數是多少?
四、餘數只可能有0-1-2-3-4-5-6-7-8-9-10這11個數字。其分別對應的最後一位身份證的號碼爲1-0-X -9-8-7-6-5-4-3-2。(即餘數0對應1,餘數1對應0,餘數2對應X...)
五、經過上面得知若是餘數是3,就會在身份證的第18位數字上出現的是9。若是對應的數字是2,身份證的最後一位號碼就是羅馬數字X。
 
    String[] idDict = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
// 17位以下 String idCard
= "53010219200508011"; List<Integer> nums = new ArrayList<Integer>(); Matcher m = Pattern.compile("\\d").matcher(idCard); while (m.find()) { nums.add(Integer.valueOf(m.group())); } int gg = 7 * nums.get(0) + 9 * nums.get(1) + 10 * nums.get(2) + 5 * nums.get(3) + 8 * nums.get(4) + 4 * nums.get(5) + 2 * nums.get(6) + 1 * nums.get(7) + 6 * nums.get(8) + 3 * nums.get(9) + 7 * nums.get(10) + 9 * nums.get(11) + 10 * nums.get(12) + 5 * nums.get(13) + 8 * nums.get(14) + 4 * nums.get(15) + 2 * nums.get(16); int eighteen = gg % 11; System.out.println(idDict[eighteen]);
相關文章
相關標籤/搜索