如何通过java代码校验银行卡号呢?请看下面方法!

 /*** 校验银行卡号方法* @param bankCard* @return*/public 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 char getBankCardCheckCode(String nonCheckCodeBankCard){if(nonCheckCodeBankCard == null || nonCheckCodeBankCard.trim().length() == 0|| !nonCheckCodeBankCard.matches("\\d+")) {//如果传的不是数据返回Nreturn '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');}

它的校验过程

  1. 从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
  2. 从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,将个位十位数字相加,即将其减去9),再求和。
  3. 将奇数位总和加上偶数位总和,结果应该可以被10整除。

测试

  • 我们先输入正确的银行卡号结果显示 true

  • 再输入错误的银行卡号结果显示 false

Java代码校验银行卡号相关推荐

  1. java代码校验手机号码_校验手机号码的正则表达式写法 (java实现)

    本文转载自:http://my.oschina.net/william1/blog/4752 要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段, 故先要整清楚现在已经 ...

  2. 安卓逆向_18 --- APK保护策略【Java代码混淆、资源混淆、签名校验】

    Java 代码混淆介绍:https://www.bilibili.com/video/BV1UE411A7rW?p=60 Android 反编译利器 jadx:GitHub上直接下载:https:// ...

  3. java ipv6校验_Java对IPv6的支持详解:支持情况、相关API、演示代码等

    本文由朱益盛.杨晖.傅啸分享,来自IBM Developer社区,原题"使用 Java 开发兼容 IPv6 的网络应用程序",本次收录时有改动. 1.引言 前几天,有个群友跟我讨论 ...

  4. 组织机构代码和统一社会信用代码校验规则以及java校验工具类

    组织机构代码 编码规则编辑 1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成. 本体代码采用系列(即分区段)顺序编码方法. 校验码按照以下公式计算: C9 ...

  5. html对银行卡号的表单验证,JavaScript中校验银行卡号的实现代码

    1.先引入jquery.js 2.接着引入luhmCheck.js //银行卡号Luhm校验 3.看下面的案例: 无标题页 下面是js function CheckBankNo(t_bankno) { ...

  6. java schema校验_Json Schema 校验json,java代码示例

    Json Schema 校验json,java代码示例 1.json schema 入门请参考下面两篇博客 1.1Json Schema 快速入门 1.2Json Schema 简介 2.java代码 ...

  7. 你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:Mr.ml https://blog.csdn.net/Ma ...

  8. 使用 lombok 简化 Java 代码

    lombok 是一个第三方工具,提供了一些注解功能,可以帮助我们消除冗余.臃肿的 Java 代码,比如 POJO 的 getter/setter 方法.构造方法.hashcode 方法等.lombok ...

  9. idea自动生成get set_CTO:不要在Java代码中写set/get方法了,逮一次罚款

    前言 what?你的 Java 代码中还充斥着大量的 set/get 方法? 我们在刚开始学习 Java 语言的时候讲过,面向对象的三大特征就是封装,继承,和多态.在 Java 中,要保证封装性,需要 ...

  10. Java程序员必备基础:Java代码是怎么运行的?

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:一个线程池 bug 引发的 GC 思考!个人原创+1博客:点击前往,查看更多 链接:https://segmen ...

最新文章

  1. 使用OpenCV,Numpy计算直方图,Matplot绘制直方图及分析
  2. [再寄小读者之数学篇](2014-05-30 有限无界函数)
  3. mysql opaq数据库_MySql数据库
  4. Java8 PriorityBlockingQueue源码分析
  5. 消息称苹果下代iPhone、iPad产品都将采用钛合金
  6. SEO|搜索引擎优化(如何让你的网站排名靠前)
  7. python增量爬虫_python增量爬虫pyspider
  8. 多链NFT市场Polkarare获加密投资机构DFG战略投资
  9. 第129天:node.js安装方法
  10. 机器人动力学-拉格朗日方程
  11. 北斗卫星导航系统基础篇之(一)
  12. 我的盖洛普“优势识别器”测试报告
  13. xlsx模块 前端_node模块之xlsx使用
  14. 100个python算法超详细讲解:委派任务
  15. 图解!24张图彻底弄懂九大常见数据结构!
  16. 项目开发团队分配管理软件
  17. C 标准库 - 参考手册
  18. 企业信息安全需要做到的三点,可以有效的规避大部分风险
  19. 致微信:我们什么时候重新定义群聊?
  20. Ubuntu如何正确地切换Intel和Nvidia显卡

热门文章

  1. HTML5网页设计——新闻页面制作
  2. 16种常用统计分析软件介绍
  3. 89c52如何控制ad9833输出正弦波,三角波,方波。
  4. Apache自带的ab压力测试工具用法详解
  5. 缺少软件测试项目?最好试试这套方法
  6. 如何使用ps制作一寸照
  7. 对Movielens数据集进行评分预测
  8. 给mBlock添加扩展模块
  9. SoundPool基本用法
  10. Java类加载器的使用