本文计算方式源自 百度百科,根据计算方式,Java计算代码如下文所示。
计算方法
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]);