Android成长之旅

银行卡号验证

2016-12-01  本文已影响18人  风的背影6885

代码验证银行卡号

/*** 判断是否是银行卡号     
* @author WJ     
* @param cardNo    
 * @return     
*/   
 public static boolean checkBankCard(String cardNo) {          
  char bit = getBankCardCheckCode(cardNo.substring(0, cardNo.length() - 1));         
   if (bit == 'N') {              
        return false;       
   }          
        return cardNo.charAt(cardNo.length() - 1) == bit;       
 }         
 private static char getBankCardCheckCode(String nonCheckCodeCardId) {        
  if (nonCheckCodeCardId == null  || nonCheckCodeCardId.trim().length() == 0  || !nonCheckCodeCardId.matches("\\d+")) {             
         // 如果传的不是数据返回N             
         return 'N';        
  }         
       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');     
 }
上一篇下一篇

猜你喜欢

热点阅读