验证信用卡卡号是否有效 Luhn算法

DogJay 2018-05-28 后端技术 462人已围观

        public class Luhn {

        public static void main(String[] args) {

            System.out.println(luhnTest("49927398716"));

            System.out.println(luhnTest("49927398717"));

            System.out.println(luhnTest("1234567812345678"));

            System.out.println(luhnTest("1234567812345670"));

        }

 

        public static boolean luhnTest(String number){

            int s1 = 0, s2 = 0;

            String reverse = new StringBuffer(number).reverse().toString();

            for(int i = 0 ;i < reverse.length();i++){

                int digit = Character.digit(reverse.charAt(i), 10);

                if(i % 2 == 0){//this is for odd digits, they are 1-indexed in the algorithm

                    s1 += digit;

                }else{//add 2 * digit for 0-4, add 2 * digit - 9 for 5-9

                    s2 += 2 * digit;

                    if(digit >= 5){

                        s2 -= 9;

                    }

                }

            }

            return (s1 + s2) % 10 == 0;

        }

    }

吐槽(0)

上一篇:项目经验

下一篇:少儿编程竞赛一览表

文章评论

    共有0条评论

    验证码:

文章目录