信用卡校验

来源:互联网 发布:卡通人物制作的软件 编辑:程序博客网 时间:2024/06/02 10:37

信用卡校验

当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
import java.util.*;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc=new Scanner(System.in);String str=sc.nextLine();int[] n=new int[str.length()];int sum1=0;//奇数项和int sum2=0;//偶数项和if(str.length()%2==0){for(int i=0;i<str.length();i=i+2){n[i]=(str.charAt(i)-'0');n[i]=n[i]*2;if(n[i]>9){n[i]=n[i]-9;}sum1=sum1+n[i];}for(int i=1;i<str.length();i=i+2){n[i]=(str.charAt(i)-'0');sum2=sum2+n[i];}if((sum1+sum2)%10==0){System.out.println("成功");}else{System.out.println("失败");}}else{for(int i=0;i<str.length();i=i+2){n[i]=(str.charAt(i)-'0');sum2=sum2+n[i];}for(int i=1;i<str.length();i=i+2){n[i]=(str.charAt(i)-'0');n[i]=n[i]*2;if(n[i]>9){n[i]=n[i]-9;}sum1=sum1+n[i];}if((sum1+sum2)%10==0){System.out.println("成功");}else{System.out.println("失败");}}}}

该校验的过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
0 0
原创粉丝点击