java检验银行卡号
- /*
- 校验过程:
- 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
- 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,将个位十位数字相加,即将其减去9),再求和。
- 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
- */
- /**
- * 校验银行卡卡号
- */
- public static boolean checkBankCard(String bankCard) {
- if(bankCard.length() < 15 || bankCard.length() > 19) {
- return false;
- }
- char bit = getBankCardCheckCode(bankCard.substring(0, bankCard.length() - 1));
- if(bit == 'N'){
- return false;
- }
- return bankCard.charAt(bankCard.length() - 1) == bit;
- }
- /**
- * 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位
- * @param nonCheckCodeBankCard
- * @return
- */
- public static char getBankCardCheckCode(String nonCheckCodeBankCard){
- if(nonCheckCodeBankCard == null || nonCheckCodeBankCard.trim().length() == 0
- || !nonCheckCodeBankCard.matches("\\d+")) {
- //如果传的不是数据返回N
- return 'N';
- }
- char[] chs = nonCheckCodeBankCard.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检验银行卡号的更多相关文章
- Java 根据银行卡号获取银行名称以及图标
转 https://blog.csdn.net/N_007/article/details/78835526 参考 CNBankCard 中国各大银行卡号查询 一.支付宝接口获取名称 根据 卡号 获取 ...
- java校验银行卡号
public class CheckBankCard { /* 校验过程: 1.从卡号最后一位数字开始,逆向将奇数位(1.3.5等等)相加. 2.从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如 ...
- eclipse scala语法用java检验 报错问题
传送门 https://stackoverflow.com/questions/8522149/eclipse-not-recognizing-scala-code 还是 直接用eclipse的 sc ...
- jquery.ajax
var params = {};//定义一个数组 var USERNAME= $("#USERNAME").val(); params["USERNAME"]= ...
- Monkey压力测试操作步骤说明
一.需配置java环境和android环境 JDK安装包:链接:https://pan.baidu.com/s/1SlnBOS0f3m2wVpEZBPfmag ...
- 1.0 Hadoop的介绍、搭建、环境
HADOOP背景介绍 1.1 Hadoop产生背景 HADOOP最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java中的数是用补码表示的检验
一.基本介绍(关于下列五个定义来自http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html#!comments,谢原 ...
- 银行卡号Luhm校验Java实现代码
import java.util.regex.Matcher; import java.util.regex.Pattern; public class CheckBankNumber { //Des ...
随机推荐
- laya3d 文件格式
先认识下laya3d的一些文件 导出文件说明: ls --- 场景文件: Json文件,包含场景中所有节点的数据信息,包含光照贴图信息 ...
- mysql中约束
约束 什么叫做约束? 约束,就是要求数据需要满足什么条件的一种“规定”. 主要有如下几种约束: 主键约束:形式: primary key ( 字段名); 含义(作用):使该设定字段的值可以用于“唯一确 ...
- 51nod-1227-平均最小公倍数
题意 定义 \(n\) 的平均最小公倍数: \[ A(n)=\frac{1}{n}\sum _{i=1}^n\text{lcm}(n,i) \] 求 \[ \sum _{i=L}^RA(i) \] \ ...
- 【bzoj4372】烁烁的游戏 动态点分治+线段树
题目描述 给一颗n个节点的树,边权均为1,初始点权均为0,m次操作:Q x:询问x的点权.M x d w:将树上与节点x距离不超过d的节点的点权均加上w. 输入 第一行两个正整数:n,m接下来的n-1 ...
- App简介及登录页面
一. APP目录 app目录: -migrations 数据操作记录,是自动创建的.数据修改表结构 -__init__.py #在python3里面可有可无都行 -__init__.py -admin ...
- 【刷题】BZOJ 4573 [Zjoi2016]大森林
Description 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力.小 ...
- [TJOI2008]彩灯 线性基
题面 题面 题解 题意:给定n个01串,求互相异或能凑出多少不同的01串. 线性基的基础应用. 对于线性基中的01串,如果我们取其中一些凑成一个新的01串,有一个重要的性质:任意2个不同方案凑出的01 ...
- 【CF55D】Beautiful numbers(动态规划)
[CF55D]Beautiful numbers(动态规划) 题面 洛谷 CF 题解 数位\(dp\) 如果当前数能够被它所有数位整除,意味着它能够被所有数位的\(lcm\)整除. 所以\(dp\)的 ...
- 洛谷 P1715 [USACO16DEC]Lots of Triangles好多三角形 解题报告
P1715 [USACO16DEC]Lots of Triangles好多三角形 题目描述 农民约翰希望通过卖出他拥有的一部分土地来增加收入.他在这片土地上种了\(N\)棵树(\(3\le N\le ...
- acid(数据库事务正确执行的四个基本要素的缩写)
ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...