java实现输入信用卡号码
2024-10-19 21:18:04
/*
当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,
因为并不是一个随便的信用卡号码都是合法的,它必须通过 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
成功
最新文章
- Atitit  补充说明 sql知识图谱与线路图attilax总结补充说明
- MapReduce 单词统计案例编程
- BZOJ3771: Triple
- Linux学习(一):从图形界面进入命令行及命令行进入图形界面
- linux安全检查
- 15个让人惊讶的 CSS3 动画效果演示
- 2015GitWebRTC编译实录7
- 第六篇、微信小程序-form组件
- cocos2d-x3.9 默认是 gnustl_static 配置,但是 这个库缺少c++的基础功能... c++_static 功能全面些
- Shell工具:jsondiff.sh
- Angular - -ngKeydown/ngKeypress/ngKeyup 键盘事件和鼠标事件
- Ext 创建workspace package
- PHP接入阿里云市场 阿里短信服务DEMO
- Android中SQLiteOpenHelper类的onUpgrade方法浅谈
- hdu 2829 Lawrence(四边形不等式优化dp)
- 超级简单的Memcache入门
- jmeter jsr223脚本引用变量的问题
- http重定向到https
- perl常用总结
- C++ 常用设计模式(学习笔记)
热门文章
- 推荐 10个 NB的 IDEA 插件,开发效率至少提升一倍
- 简述SpringCloud框架
- 初识spring boot maven管理--属性文件配置
- EM算法和GMM算法的相关推导及原理
- 《机器学习_01_线性模型_线性回归_正则化(Lasso,Ridge,ElasticNet)》
- (mysql)数据库笔记
- 解决 Loaded plugins: fastestmirror
- nginx配置之负载均衡
- Shift - And字符串快速处理 hdu5972+cf
- Robot Framework(4)- 测试套件的基本使用