- 第 1 步:将卡号从右数第二位开始的交替数字的值加倍。
- 步骤 2:将步骤 1 中获得的单个数字与原始数字中的每个未受影响的数字相加。
- 第三步:如果第二步得到的总和能被10整除,则卡号有效,否则无效。
例如,使用 Mod 10 算法验证 VISA 卡 49977393716 的卡号:
步骤1:
4 9 9 7 7 3 9 3 7 1 6
x2 x2 x2 x2 x2
= 18 14 6 6 2
第2步:4 + (1+8) + 9 + (1+4) + 7 + (6) + 9 + (6) + 7 + (2) + 6 = 70
第三步:70能被10整除⇒卡号有效
这是问题的第二部分。所以我将卡号用户输入作为字符串。这是否意味着我必须 charAt(),需要的字符//替代值。
int[] digits = new int[cardNo.length()/2];//Number of alternate values available
char digit1;
char digit2;
int intDigit1;
int intDigit2;
int[] sumOfTwoDigits = new int[cardNo.length()/2];
int totalSum;
String digitsChar;
for(int i=0; i<digits.length; i++){
digits[i]=(cardNo.charAt(i+1))*2;
digitsChar=Integer.toString(digits[i]);
digit1= digitsChar.charAt(1);
digit2= digitsChar.charAt(2);
intDigit1= Character.getNumericValue(digit1);//Convert char to int to perform addition
intDigit2= Character.getNumericValue(digit2);//Convert char to int to perform addition
sumOfTwoDigits[i] = intDigit1+intDigit2;
System.out.println("digits: " + intDigit1);
}