/*
当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,
因为并不是一个随便的信用卡号码都是合法的,它必须通过 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
程序输出:成功
*/
package Question20_29;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Question23 {
public static String judge(String s) {
int count=1;
int sum=0;
for (int i = s.length()-1; i >=0 ; i--,count++) {
if(count%2==1){
sum+=(s.charAt(i)-'0');
}else {
45
sum+=(s.charAt(i)-'0')*2>=10?(s.charAt(i)-'0')*2-9:(s.charAt(i)-'0')*2;
}
}
if(sum%10==0){
return "成功";
}else {
return "失败";
}
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String s=scanner.nextLine();
System.out.println(judge(s));
}
}

运行结果:

输入卡号:5432123456788881

成功

最新文章

  1. Atitit  补充说明 sql知识图谱与线路图attilax总结补充说明
  2. MapReduce 单词统计案例编程
  3. BZOJ3771: Triple
  4. Linux学习(一):从图形界面进入命令行及命令行进入图形界面
  5. linux安全检查
  6. 15个让人惊讶的 CSS3 动画效果演示
  7. 2015GitWebRTC编译实录7
  8. 第六篇、微信小程序-form组件
  9. cocos2d-x3.9 默认是 gnustl_static 配置,但是 这个库缺少c++的基础功能... c++_static 功能全面些
  10. Shell工具:jsondiff.sh
  11. Angular - -ngKeydown/ngKeypress/ngKeyup 键盘事件和鼠标事件
  12. Ext 创建workspace package
  13. PHP接入阿里云市场 阿里短信服务DEMO
  14. Android中SQLiteOpenHelper类的onUpgrade方法浅谈
  15. hdu 2829 Lawrence(四边形不等式优化dp)
  16. 超级简单的Memcache入门
  17. jmeter jsr223脚本引用变量的问题
  18. http重定向到https
  19. perl常用总结
  20. C++ 常用设计模式(学习笔记)

热门文章

  1. 推荐 10个 NB的 IDEA 插件,开发效率至少提升一倍
  2. 简述SpringCloud框架
  3. 初识spring boot maven管理--属性文件配置
  4. EM算法和GMM算法的相关推导及原理
  5. 《机器学习_01_线性模型_线性回归_正则化(Lasso,Ridge,ElasticNet)》
  6. (mysql)数据库笔记
  7. 解决 Loaded plugins: fastestmirror
  8. nginx配置之负载均衡
  9. Shift - And字符串快速处理 hdu5972+cf
  10. Robot Framework(4)- 测试套件的基本使用