验证信用卡

来源:互联网 发布:java 重载 编辑:程序博客网 时间:2024/06/09 16:48
/** *  * @author WSS *1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。  * 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。  * 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。  * 例如,卡号是:5432123456788881  * 奇数位和=35  * 偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。  * 最后35+35=70 可以被10整除,认定校验通过。  */public class CheckCreditCard {public static boolean checkCreditCard(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;}}}}int total=odd+even; // 返回奇数位总和加上偶数位总和 if(total % 10==0){return true;}return false;}public static void main(String[] args){Scanner scan=new Scanner(System.in);String s=scan.nextLine();boolean a=checkCreditCard(s);if(a){System.out.println("是信用卡");}else{System.out.println("不是信用卡");}}}


0 0
原创粉丝点击