怎样用java定义方法实现luhn算法
发布网友
发布时间:2022-04-19 03:23
我来回答
共1个回答
热心网友
时间:2022-04-19 04:53
import java.util.Scanner;
//信用卡号校验算法
public class Luhn {
public static void main(String[] args) {
System.out.println("Please input your credit card number:");
Scanner input = new Scanner(System.in);
int sumOdd = 0;
int sumEven = 0;
String number = input.next();
int length = number.length();
int[] wei = new int[length];
for (int i = 0; i < number.length(); i++) {
wei[i] = Integer.parseInt(number.substring(length - i - 1, length
- i));// 从最末一位开始提取,每一位上的数值
System.out.println("第" + i + "位数字是:" + wei[i]);
}
for (int i = 0; i < length / 2; i++) {
sumOdd += wei[2 * i];
if ((wei[2 * i + 1] * 2) > 9)
wei[2 * i + 1] = wei[2 * i + 1] * 2 - 9;
else
wei[2 * i + 1] *= 2;
sumEven += wei[2 * i + 1];
}
System.out.println("奇数位的和是:" + sumOdd);
System.out.println("偶数位的和是:" + sumEven);
if ((sumOdd + sumEven) % 10 == 0)
System.out.println("Recept.");
else
System.out.println("Can not recept.");
}
}
运行结果:
Please input your credit card number:
5432123456788881
第0位数字是:1
第1位数字是:8
第2位数字是:8
第3位数字是:8
第4位数字是:8
第5位数字是:7
第6位数字是:6
第7位数字是:5
第8位数字是:4
第9位数字是:3
第10位数字是:2
第11位数字是:1
第12位数字是:2
第13位数字是:3
第14位数字是:4
第15位数字是:5
奇数位的和是:35
偶数位的和是:35
Recept.