Luhn的算法无法正常工作

时间:2016-02-20 22:45:03

标签: java eclipse

对于熟悉Luhn算法的人,我正在编译一个使用此算法验证信用卡号的程序。这就是我的意思:

Scanner input = new Scanner(System.in);

String ccNum = "";
int product = 0;
int sum = 0;

System.out.print("Please enter a credit card #: ");
ccNum = input.next();

for(int i = 0 + 1; i < ccNum.length(); i--){
    int number = Integer.parseInt(ccNum.substring(i, i + 1));

    if(i % 2 != 0){
        product = number * 1;
    }
    else{
        product = number * 2;
    }
    if(product > 9){
        product -= 9;
        sum += product;
    }
}
boolean valid = (sum % 10 == 0);
if(valid){
    System.out.println("Valid!");
}
else{
    System.out.println("Invalid!");
}
}

}

我对这个程序很困惑。当我运行它时,我得到了&#34; StringIndexOutOfBoundsExpection&#34;错误。我该怎么换?但是,我们不能在这个程序中使用数组。我们只使用8位数字而不是完整的16位数字。

1 个答案:

答案 0 :(得分:0)

试试这个。

    boolean alt = false;
    for(int i = ccNum.length() - 1; i >= 0; i--, alt = !alt){
        int number = ccNum.charAt(i) - '0';
        if(alt)
            number *= 2;
        if(number > 9)
            number -= 9;
        sum += number;
    }
    boolean valid = (sum % 10 == 0);