- ステップ1:カード番号の右から2番目の数字から始まる1桁目の数字の値を2倍にします。
- ステップ 2: ステップ 1 で取得した個々の数字と、元の番号の影響を受けていない各数字を追加します。
- ステップ 3: ステップ 2 で得られた合計が 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
ステップ3:70は10で割り切れる⇒カード番号は有効
これは質問の 2 番目の部分です。したがって、カード番号のuserInputを文字列として取得しました。つまり、必要な文字 // 代替値である 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);
}