public static void calcIdCardLastNum(String idCardNum18) { int[] quan = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; char[] idNumCharArray = idCardNum18.toCharArray(); char[] checkCode = new char[]{'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; int sum = 0; for (int i = 0, length = quan.length; i < length; i++) { sum += quan[i] * (idNumCharArray[i] - '0'); } int remain = sum % 11; System.out.println(remain); System.out.println(checkCode[remain]); }
另外记录java中char转int的方法:
因为在测试这个方法中,错误的使用了Integer.valueOf(idNumCharArray[1]) 去转化,这个的意思是获取字符对应的ASCII码值,而不是获取char字面上的值。
可以使用:
Integer.parseInt(String.valueOf(idNumCharArray[i]))
或者是
idNumCharArray[i] - '0'