编写一个程序,验证从标准输入获得的信用卡号是否校验通过, |
校验通过,则输出”成功“,校验未通过则输出”失败“。该校验过程如下: |
(1)从卡号最后一位数字开始,逆向将奇数位(l,3,5等等)相加。 |
(2)从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数, |
则将其减去9),再求和。 |
(3)将奇数位总和加上偶数位总和,结果应该可以被10整除。 |
例如,卡号是54321123456788881,则程序应输出:成功。请编程实现。 |
public class YanZheng {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的信用卡号:");
String num = sc.nextLine();
odd(num);
even(num);
if ((odd(num)+even(num))%10==0) {
System.out.println("恭喜你,验证成功!");
}else {
System.out.println("对不起,验证失败!");
}
}
private static int odd(String num) {
// TODO Auto-generated method stub
char[] arr = num.toCharArray();
int sum = 0;
for (int i = arr.length-1; i >= 0; i-=2) {
sum+=Character.getNumericValue(arr[i]);
}
return sum;
}
private static int even(String num) {
// TODO Auto-generated method stub
char[] arr = num.toCharArray();
int sum = 0;
int b = 0;
for (int i = arr.length-2; i >= 0; i-=2) {
b=Integer.parseInt(arr[i]+"")*2;
if (b>9) {
b=b-9;
}
sum+=b;
}
return sum;
}
}