本文計算方式源自 百度百科,根據計算方式,Java計算代碼以下文所示。spa
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]);