对于熟悉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位数字。
答案 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);