Java银行卡工具类



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);

}

}

}

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

航迹者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值