多说无益,贴代码:

/**
   * 校验银行卡卡号
   *
   * @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');
  } 

感觉这个复制过去即可…所以我也没深入研究.感觉浪费时间.

以上所述是小编给大家介绍的Java校验银行卡是否正确的核心代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。