本文计算方式源自 百度百科,根据计算方式,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]);
原文:https://www.cnblogs.com/xiaopan-cp9/p/10403529.html