绪论
杂七杂八,瞎记一下。
校验规则说明
- 自右向左顺序编号。
- 从序号2开始求出偶数位上之和。( 0+8+6+4+2=20 )①
- 从序号3开始求出奇数位上之和。( 9+7+5+3+1=25 )②
- 偶数位上之和乘3加上奇数位之和。 ( 20*3+25=85 )③
- 用大于或等于结果③且为10最小整数倍的数减去结果③,其差就是所求校验码的值。( 90-85=5 ,校验码X=5)
代码:
public static String check(String Numbers) {
try {
int c1 = 0;
int c2 = 0;
// 反转字符串 123 变 321
char[] scpators = Numbers.toCharArray();
for (int i = 0; i < scpators.length / 2; i++) {
char temp = scpators[i];
scpators[i] = scpators[scpators.length - i - 1];
scpators[scpators.length - i - 1] = temp;
}
for (int i = 0; i < scpators.length; i++) {
if (i % 2 == 0) {
c1 += Integer.valueOf(scpators[i]);
} else
c2 += Integer.valueOf(scpators[i]);
}
int c3 = c1 * 3 + c2;
c3 = c3 - c3 / 10 * 10;
if (c3 == 0) {
return Numbers + "0";
} else {
int N = 10 - c3;
return Numbers + N;
}
} catch (Exception ex) {
ex.printStackTrace();
return Numbers;
}
}
结果:
若验证正确性,可去掉字符串最后一位,再调用此方法,进行对比即可。
(若有什么错误,请留言指正,3Q)