Java信用卡验证– Java中的Luhn算法
时间:2020-02-23 14:34:59 来源:igfitidea点击:
最近,我知道信用卡号不是随机的,并且通过了Luhn算法测试。
Java信用卡验证
任何信用卡号都应通过以下测试:
从最右边的数字开始,我们应该每隔两位数字加倍。
如果双精度数大于9,则将两个数字相加,以使最终数字为一个数字。现在将数字中的所有数字,未更改的数字和加倍的数字相加。
最终的总和应为10的倍数,或者数字的mod 10应该为0。
如果不是,则其不是有效的信用卡号。
我们以信用卡号为12345678903555的示例进行检查。
位数为:1,2,3,4,5,6,7,8,9,0,3,5,5,5加倍后:2,2,6,4,1,6,5,8,9 ,0,6,5,1,5数字总和:2 + 2 + 6 + 4 + 1 + 6 + 5 + 8 + 9 + 0 + 6 + 5 + 1 + 5 = 60 = 6 * 10,因此a有效的信用卡号。
Java中的Luhn算法
其中我提供了Java Luhn算法程序来验证信用卡号。
package com.theitroad.util; public class JavaLuhnAlgorithm { public static void main(String[] args) { validateCreditCardNumber("12345678903555"); String imei = "012850003580200"; validateCreditCardNumber(imei); } private static void validateCreditCardNumber(String str) { int[] ints = new int[str.length()]; for (int i = 0; i < str.length(); i++) { ints[i] = Integer.parseInt(str.substring(i, i + 1)); } for (int i = ints.length - 2; i >= 0; i = i - 2) { int j = ints[i]; j = j * 2; if (j > 9) { j = j % 10 + 1; } ints[i] = j; } int sum = 0; for (int i = 0; i < ints.length; i++) { sum += ints[i]; } if (sum % 10 == 0) { System.out.println(str + " is a valid credit card number"); } else { System.out.println(str + " is an invalid credit card number"); } } }
其中我将验证方法的输入作为String输入,以便在第一个数字为0的地方也可以使用。
上面程序的输出是:
12345678903555 is a valid credit card number 012850003580200 is a valid credit card number