在我们的指令中,我们必须得到一个16位数字,然后将奇数位置的所有数字从右到左加起来。之后,我们必须将所有偶数位数字从右到左,总和加倍,然后取模块9.当我尝试运行我的代码时,即使它使用的是有效的信用卡,我仍然会收到“无效”数。计算java中偶数位数字和奇数位数的总和时出错
public static boolean validateCreditCard(long number) {
double cardSum = 0;
for (int i = 0; i < 16; i++) {
long cardnumber = (long) Math.pow(10, i);
double oddPlaceSum = 0;
double evenPlaceSum = 0;
if (i % 2 != 0) {
oddPlaceSum += ((int)(number % cardnumber/(Math.pow(10, i))));
} else { // so if i%2 ==0
evenPlaceSum += ((int)(number % cardnumber/(Math.pow(10, i)) * 2 % 9));
}
cardSum += evenPlaceSum + oddPlaceSum;
}
if (cardSum % 10 == 0) {
return true;
System.out.println("Valid");
} else {
return false;
System.out.println("Invalid");
}
}
这不是有效的Java(可达语句)。 – xehpuk