Han*_*h P 1 java checksum luhn
我正在尝试使用此代码来测试示例代码是否是Java中的有效信用卡号(使用Luhn算法).我哪里做错了?它包含16个一位数字的数组.任何帮助将非常感激.谢谢!
private static boolean isValidCC(int[] number) {
int sum = 0;
boolean alternateNum = true;
for (int i = number.length-1; i>=0; i--) {
int n = number[i];
if (alternateNum) {
n *= 2;
if (n > 9) {
n = (n % 10) + 1;
}
}
sum += n;
alternateNum = !alternateNum;
}
System.out.println(sum);
return (sum % 10 == 0);
}
Run Code Online (Sandbox Code Playgroud)
从维基百科的文章来看 - 你错过了校验和数字或错误地将其考虑在内 - .
更新:最有可能的是,你已经开始使用错误的"备用"标志.
有一个Java片段,为什么不使用它呢?
public static boolean isValidCC(String number) {
final int[][] sumTable = {{0,1,2,3,4,5,6,7,8,9},{0,2,4,6,8,1,3,5,7,9}};
int sum = 0, flip = 0;
for (int i = number.length() - 1; i >= 0; i--) {
sum += sumTable[flip++ & 0x1][Character.digit(number.charAt(i), 10)];
}
return sum % 10 == 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1008 次 |
| 最近记录: |