package info.baian.tg.utils;
/**
* 银行卡工具类
*/
public class BankCardUtil {
/*
* 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
* 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
* 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。 例如,卡号是:5432123456788881
* 则奇数、偶数位(用红色标出)分布:5432123456788881 奇数位和=35 偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7
* 7,求和=35。 最后35+35=70 可以被10整除,认定校验通过。
*/
/**
* 检查银行卡号是否有效
*
* @param cardNumber 要检查的卡号
* @return true 如果卡号有效
*/
public static boolean isValidCardNumber(String cardNumber) {
if (cardNumber == null || !cardNumber.matches("\\d{16,19}")) {
return false;
}
int sum = 0;
boolean doubleDigit = false;
for (int i = cardNumber.length() - 1; i >= 0; i--) {
int digit = cardNumber.charAt(i) - '0';
if (doubleDigit) {
digit *= 2;
if (digit > 9) {
digit -= 9;
}
}
sum += digit;
doubleDigit = !doubleDigit;
}
return sum % 10 == 0;
}
public static void main(String[] args) {
String[] cardNumbers = {
"4984511299189173"
// 添加其他要验证的银行卡号
};
for (String cardNumber : cardNumbers) {
boolean isValid = isValidCardNumber(cardNumber);
System.out.println("银行卡号:" + cardNumber + " 是否有效: " + isValid);
}
}
}
Java银行卡工具类
最新推荐文章于 2024-05-16 09:49:12 发布