Luhn验证银行卡号是否合法

package com.dcqq.common.utils;public class LuhnUtil {public static void main(String[] args) {boolean b = checkBankCardId("62290860202331251");System.out.println(b);}/*** 检验银行卡号是否合法* 采用Luhn算法检验* 校验算法步骤:* 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。* 2、从卡号最后一位数字开始,逆向将偶数位数字乘以2(如果乘积为两位数,则将其减去9),再求和。* 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。* @param bankCardId    银行卡号* @return  true合法;false不合法*/public static boolean checkBankCardId(String bankCardId){if (bankCardId == null)return false;int length = bankCardId.length();if (length < 15 || length > 19)return false;int total = 0;for (int i = 0; i < length; i++) {char c = bankCardId.charAt(length - 1 - i);int valueOfChar = Character.getNumericValue(c);if ((i + 1) % 2 == 0) {//偶数位int temp = valueOfChar * 2;temp = temp / 10 + temp % 10;
//                temp = temp > 9 ? temp - 9 : temp;total = total + temp;} else {total = total + valueOfChar;}}return total % 10 == 0;}}

参考:https://blog.csdn.net/weixin_30438813/article/details/97993666?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaiduRate-5-97993666-blog-126628470.235%5Ev43%5Epc_blog_bottom_relevance_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaiduRate-5-97993666-blog-126628470.235%5Ev43%5Epc_blog_bottom_relevance_base3&utm_relevant_index=10

https://blog.csdn.net/jshch2009/article/details/55255236?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-55255236-blog-97993666.235%5Ev43%5Epc_blog_bottom_relevance_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-55255236-blog-97993666.235%5Ev43%5Epc_blog_bottom_relevance_base3&utm_relevant_index=3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鼠标事件(点击换色)分别使用js和jQuery代码实现

js代码实现&#xff1a;按键盘时换色&#xff0c;不按是另一个色。 <body>输入你的名字: <input type"text"><p>在以上输入框中输入你的名字。</p><script type"text/JavaScript">let onedocument.getElementsByTagName(in…

上位机图像处理和嵌入式模块部署(qmacvisual跳转语句)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们依次讨论了判断语句和结束判断语句&#xff0c;今天我们继续学习跳转语句。从功能上面来说&#xff0c;跳转语句和判断语句较为类似。不过…

时间序列预测的零样本学习是未来还是炒作:TimeGPT和TiDE的综合比较

最近时间序列预测预测领域的最新进展受到了各个领域&#xff08;包括文本、图像和语音&#xff09;成功开发基础模型的影响&#xff0c;例如文本&#xff08;如ChatGPT&#xff09;、文本到图像&#xff08;如Midjourney&#xff09;和文本到语音&#xff08;如Eleven Labs&…

【JS】html字符转义

需求 将html转为字符串将html字符串转义&#xff0c;比如<div>转为<div> 码 /*** html标签字符转义* param {Stirng} str 要转换的html字符* returns String 返回转义的html字符串*/ const elToStr str > str.replaceAll(<, <).replaceAll(>, >)…

ChatGPT有身体了,能走向千家万户吗?

3月13日&#xff0c;OpenAI投资的人形机器人——Figure 01迎来重磅更新&#xff0c;接入最新版ChatGPT后&#xff0c;它能和人交流描述眼前看到的事物。在视频中&#xff0c;Figure 的人形机器人&#xff0c;可以完全与人类流畅对话&#xff0c;还能理解人的自然语言指令进行抓…

JDK、JRE和JVM的区别

一、JDK java development kit java开发工具包 负责开发、编译和运行java代码 二、JRE java runtime environment java运行时环境 负责运行java类&#xff0c;比如运行jar包&#xff0c;无需开发的话&#xff0c;只安装JRE即可 三、JVM java virtual machine java虚拟机…

搞懂分布式技术:缓存更新的套路

目录 缓存更新的套路 Cache Aside Pattern Read/Write Through Pattern Read Through Write Through Write Behind Caching Pattern 再多唠叨一些 缓存更新的套路 看到好些人在写更新缓存数据代码时&#xff0c;先删除缓存&#xff0c;然后再更新数据库&#xff0c;而后续的操作…

代码随想录 -- 回溯算法

文章目录 回溯算法理论什么是回溯法回溯法的效率回溯法解决的问题理解回溯法回溯法模板 组合问题I描述题解优化 组合总和III描述题解 电话号码的字母组合描述题解 组合总和描述题解 组合总和II描述题解 分割回文串描述题解 复原IP地址描述题解 子集描述题解 子集II描述题解 递增…

shallowReactive浅层式响应对象

一、 reactive 和ref 都是深层响应式对象: 就是不管对象有多少层&#xff0c;修改此对象任一属性都会响应式处理 shallowReactive 和shallowRef 浅层响应式对象: 只会修改第一层对象&#xff0c;修改此对象第一层属性&#xff0c;视图会有同步变化&#xff0c;非第一层&#xf…

Webapi 日志过滤器(接口日志记录)

/// <summary> /// 日志过滤器 /// </summary> public class LogFilter : IAsyncActionFilter {private readonly ILogger<LogFilter> _logger;public LogFilter(ILogger<LogFilter> logger){_logger logger;}public async Task OnActionExecutionAsy…

WorkPlus Meet局域网视频会议软件的领先解决方案

局域网视频会议软件在现代企业中发挥着重要的作用&#xff0c;而在众多选项中&#xff0c;为何选择WorkPlus Meet作为局域网视频会议软件&#xff1f; 选择局域网视频会议软件时需要考虑到企业的需求。WorkPlus Meet提供了稳定、高效的局域网视频会议功能&#xff0c;能够满足…

关于d3dx9_43.dll文件丢失的解决办法,六种详细方法

当d3dx9_43.dll文件缺失时&#xff0c;系统会显示错误信息来提示用户。这些错误信息可能会包含类似于"d3dx9_43.dll未找到"或"找不到d3dx9_43.dll"等字样。通常出现这样的字样那就是导致应用程序通常无法正常启动或执行相关功能。那么出现这样的功能有什么…

哔哩哔哩后端Java一面

前言 作者&#xff1a;晓宜 个人简介&#xff1a;互联网大厂Java准入职&#xff0c;阿里云专家博主&#xff0c;csdn后端优质创作者&#xff0c;算法爱好者 最近各大公司的春招和实习招聘都开始了&#xff0c;这里分享下去年面试B站的的一些问题&#xff0c;希望对大家有所帮助…

【自动化】C#中的全双工通信与半双工通信:读写问题及应用实例

引言&#xff1a; 在网络编程和嵌入式系统中&#xff0c;串口通信是一个常见的任务。C#语言通过SerialPort类为开发者提供了实现串口通信的便捷方式。在串口通信中&#xff0c;根据通信双方能否同时发送和接收数据&#xff0c;可以将通信模式分为全双工和半双工两种。本文将详细…

c语言:于龙减

于龙减 任务描述 于老师觉得于龙加法还不够刺激&#xff0c;于是又设计了于龙减。 两个非负整数的于龙减“A&#xff0d;B”的意义是&#xff1a;在A的所有数字中&#xff0c;凡是在B中出现的数字都划掉&#xff0c;A中剩下的数就是结果&#xff0c;如果不剩结果就是0。 于龙…

【Golang星辰图】Go语言游戏开发:选择合适的库加速你的开发过程

打造出色的游戏体验&#xff1a;使用Go库进行游戏和图形开发 前言 Go语言通过其简洁、高效和并发性的特性&#xff0c;逐渐在开发领域中崭露头角。对于游戏和图形开发&#xff0c;Go也有一些优秀的库和引擎可供选择。本文将介绍几个流行的Go库&#xff0c;包括ebiten、raylib…

Centos7安装ffmpeg

Centos7安装ffmpeg 用到的包压缩并安装 用到的包 压缩并安装 tar xvJf ffmpeg-5.0.1.tar.xz yum install -y gcctar -zxvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make && make install yasm --versionyum install -y bzip2tar jxvf nasm-2.14.02.tar.bz2 cd n…

C语言向C++过渡的基础知识(二)

目录 C中的函数重载 函数重载介绍 函数类型的使用 C中的引用 引用的介绍 引用的使用 引用与指针的对比 常量引用 引用在实际中的使用 函数返回值 返回值和返回引用时间消耗对比 函数形式参数 形式参数为值与形式参数为引用时间消耗对比 内联函数 内联函数的特点…

Spring MVC文件上传配置

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 文件上传 Spring MVC文件上传基于Servlet 3.0实现&#xff1b;示例代码如下&#xff1a; Overrideprotected void customizeRegistration(ServletRegistration.Dynamic reg…

Guitar Pro 8.1功能介绍及如何安装安装破解教程

音乐创作是许多音乐人的核心工作&#xff0c;而吉他作为其中最为常用的乐器之一&#xff0c;其创作和演奏的重要性也不言而喻。在创作过程中&#xff0c;如何更好地记录和编辑音乐成为了许多音乐人所面临的挑战。而Guitar Pro 8.1则是一款专业的吉他音乐编辑软件&#xff0c;它…