当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心, 因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
/** 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,* 因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。该校验的过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
例如,卡号是:5432123456788881
则奇数、偶数位(用红色标出)分布:5432123456788881
奇数位和=35
偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。
最后35+35=70 可以被10整除,认定校验通过。请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。
比如,用户输入:356827027232780
程序输出:成功*/
import java.util.Scanner;
public class Demo10 {public static int calc(String s){int odd = 0;int even = 0;int t = 0;char[] c = s.toCharArray();if(c.length%2==0){ // 如果位数为偶数个,则第一个数从偶数开始算起for(int i=0;i<c.length;i++){t = c[i]-'0';if(i%2!=0){odd += t;}else{ // 第一个数加入到偶数if(t*2>=10){even += t*2-9;}else{even += t*2;}}}}else{ // 如果位数为奇数个,则第一个数从奇数开始算起for(int i=0;i<c.length;i++){t = c[i]-'0';if(i%2==0){ // 第一个数加入到奇数odd += t;}else{if(t*2>=10){even += t*2-9;}else{even += t*2;}}}}return odd+even; // 返回奇数位总和加上偶数位总和}public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.print("输入卡号:");String s = scan.nextLine();if(calc(s)%10==0){ // 结果可以被10整除System.out.println("成功");}else{System.out.println("失败");}}
}
运行结果:
输入卡号:5432123456788881
成功
当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心, 因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。相关推荐
- 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程:1、从卡号最后一位数字开始,逆
import java.util.Scanner;/*** 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,* 因为并不是一个随便的信用卡号码都是合法的,它必须通过Luh ...
- 银行卡校验规则(Luhn算法)
当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过. 该校验的过程: 1.从卡号最后一位数字 ...
- luhn算法java_Java信用卡验证– Java中的Luhn算法
luhn算法java Recently I came to know that Credit Card numbers are not random and passes Luhn Algorithm ...
- js luhn算法_判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...
- 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...
- 【算法】验证哥德巴赫猜想
问题来源 Timus Online Judge 网站上有这么一道题目:1356. Something Easier.这道题目的输入是一组 2 到 109 之间整数,对于每个输入的整数,要求用最少个数 ...
- 数据结构上机实践第13周项目1 - 验证Prim算法的验证
验证Prim算法的验证 本次实践所用到的算法库点击此处. 实现源代码: //*Copyright (c)2017,烟台大学计算机与控制工程学院* //*All rights reservrd.* // ...
- 第13周项目3-Dijkstra算法的验证
问题及代码: /* * Copyright (c)2015,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:项目3.cbp * 作 者:孙翰文 * 完成日期: ...
- PHP中使用Luhn算法校验信用卡及借记卡卡号
Luhn算法会通过校验码对一串数字进行验证,校验码通常会被加到这串数字的末尾处,从而得到一个完整的身份识别码. 我们以数字"7992739871"为例,计算其校验位: 从校验位开始 ...
最新文章
- mysql 多表关联建模_(四)多对多模式 - 数据库模型设计专栏 - CSDN博客
- c语言为什么提供函数声明机制,通过实战理解C语言精要——函数篇
- TFS2008自定义过程模板之 Power Tools 工具篇
- 使用关指定中断解决资源冲突问题
- Android开发之线程池管理ThreadPoolExecutor和Executors.newSingleThreadExecutor()
- 更改python默认路径_Linux下多版本python共存时,默认执行路径修改方法
- C语言进制的格式字符,GB汉字文件转换成C语言Unicode十六进制字符串格式
- FreeTextBox 3.1.6 的实践总结和几个问题
- 前脚修复,后脚放 PoC:马上修复这个严重的SAP Recon 漏洞!
- VC维含义的个人理解
- linux管理员基础知识
- FPGA驱动USB协议芯片的测试
- IDEA配置文件保存位置修改
- freenom 加 cloudflare免费域名申请
- vue中使用vue-pdf插件显示pdf
- Ubuntu16.04安装x11vnc服务并设置自动启动
- 如果世界上的男人们都在数据库中……
- 计算机休眠按钮是哪个,电源按钮设置成睡眠好还是休眠好?
- 简单排序算法时间空间复杂度分析及应用(4)-二分插入排序
- 第五章:广度优先搜索
热门文章
- Win10部分引起鼠标卡顿间歇性失灵的原因
- gt; 和 lt; 代表大于号gt; 和小于号lt; 以及其英文的全称
- 一种新型免费无损图片格式FLIF
- 机器学习Sklearn——红酒分类案例详解决策树模型参数
- 如何通过手机APP远程控制PLC
- Multisim基础 交流电源AC的Voltage offset的含义
- 金蝶实习(十一)——简单的二次开发
- linux无法安装at命令,在Ubuntu/Debian/CentOS/Fedora下安装At及各种At命令的用法
- 芯片SA58672(功放芯片)
- 2016年高中计算机考试模拟试题,2016年计算机二级考试模拟试题及答案