本文主要是介绍校验银行卡是否正确,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
多说无益,贴代码:
/*** 校验银行卡卡号* * @param cardId* @return*/public static boolean checkBankCard(String cardId) {char bit = getBankCardCheckCode(cardId.substring(0, cardId.length() - 1));return cardId.charAt(cardId.length() - 1) == bit;}/*** 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位* * @param nonCheckCodeCardId* @return*/public static char getBankCardCheckCode(String nonCheckCodeCardId) {int cardLenth = nonCheckCodeCardId.trim().length();if (nonCheckCodeCardId == null || cardLenth == 0|| !nonCheckCodeCardId.matches("\\d+")) {throw new IllegalArgumentException("不是银行卡的卡号!");}char[] chs = nonCheckCodeCardId.trim().toCharArray();int luhmSum = 0;for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) {int k = chs[i] - '0';if (j % 2 == 0) {k *= 2;k = k / 10 + k % 10;}luhmSum += k;}return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0');}
这篇关于校验银行卡是否正确的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!