/** 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,* 因为并不是一个随便的信用卡号码都是合法的,它必须通过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算法来验证通过。相关推荐

  1. 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程:1、从卡号最后一位数字开始,逆

    import java.util.Scanner;/*** 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,* 因为并不是一个随便的信用卡号码都是合法的,它必须通过Luh ...

  2. 银行卡校验规则(Luhn算法)

       当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过. 该校验的过程: 1.从卡号最后一位数字 ...

  3. luhn算法java_Java信用卡验证– Java中的Luhn算法

    luhn算法java Recently I came to know that Credit Card numbers are not random and passes Luhn Algorithm ...

  4. js luhn算法_判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验

    开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...

  5. 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验

    开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...

  6. 【算法】验证哥德巴赫猜想

    问题来源 Timus Online Judge 网站上有这么一道题目:1356. Something Easier.这道题目的输入是一组  2 到 109 之间整数,对于每个输入的整数,要求用最少个数 ...

  7. 数据结构上机实践第13周项目1 - 验证Prim算法的验证

    验证Prim算法的验证 本次实践所用到的算法库点击此处. 实现源代码: //*Copyright (c)2017,烟台大学计算机与控制工程学院* //*All rights reservrd.* // ...

  8. 第13周项目3-Dijkstra算法的验证

    问题及代码: /* * Copyright (c)2015,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:项目3.cbp * 作 者:孙翰文 * 完成日期: ...

  9. PHP中使用Luhn算法校验信用卡及借记卡卡号

    Luhn算法会通过校验码对一串数字进行验证,校验码通常会被加到这串数字的末尾处,从而得到一个完整的身份识别码. 我们以数字"7992739871"为例,计算其校验位: 从校验位开始 ...

最新文章

  1. mysql 多表关联建模_(四)多对多模式 - 数据库模型设计专栏 - CSDN博客
  2. c语言为什么提供函数声明机制,通过实战理解C语言精要——函数篇
  3. TFS2008自定义过程模板之 Power Tools 工具篇
  4. 使用关指定中断解决资源冲突问题
  5. Android开发之线程池管理ThreadPoolExecutor和Executors.newSingleThreadExecutor()
  6. 更改python默认路径_Linux下多版本python共存时,默认执行路径修改方法
  7. C语言进制的格式字符,GB汉字文件转换成C语言Unicode十六进制字符串格式
  8. FreeTextBox 3.1.6 的实践总结和几个问题
  9. 前脚修复,后脚放 PoC:马上修复这个严重的SAP Recon 漏洞!
  10. VC维含义的个人理解
  11. linux管理员基础知识
  12. FPGA驱动USB协议芯片的测试
  13. IDEA配置文件保存位置修改
  14. freenom 加 cloudflare免费域名申请
  15. vue中使用vue-pdf插件显示pdf
  16. Ubuntu16.04安装x11vnc服务并设置自动启动
  17. 如果世界上的男人们都在数据库中……
  18. 计算机休眠按钮是哪个,电源按钮设置成睡眠好还是休眠好?
  19. 简单排序算法时间空间复杂度分析及应用(4)-二分插入排序
  20. 第五章:广度优先搜索

热门文章

  1. Win10部分引起鼠标卡顿间歇性失灵的原因
  2. gt; 和 lt; 代表大于号gt; 和小于号lt; 以及其英文的全称
  3. 一种新型免费无损图片格式FLIF
  4. 机器学习Sklearn——红酒分类案例详解决策树模型参数
  5. 如何通过手机APP远程控制PLC
  6. Multisim基础 交流电源AC的Voltage offset的含义
  7. 金蝶实习(十一)——简单的二次开发
  8. linux无法安装at命令,在Ubuntu/Debian/CentOS/Fedora下安装At及各种At命令的用法
  9. 芯片SA58672(功放芯片)
  10. 2016年高中计算机考试模拟试题,2016年计算机二级考试模拟试题及答案