【发布时间】:2020-02-28 07:01:08
【问题描述】:
我一直试图弄清楚这种 Luhns 验证信用卡的方法,但我似乎无法弄清楚。我需要使用方法并且不能使用数组,所以我完全被难住了。
这是 Luhns 检查:
信用卡号必须包含 13 到 16 位数字。它必须以: ■ Visa卡4张 ■ 主卡5张 ■ 美国运通卡37 ■ 6 用于发现卡
- 从右到左每隔一个数字加一次。如果一位数加倍得到两位数,则将两位数相加得到一位数。
- 现在添加步骤 a 中的所有个位数。
- 将卡号从右到左奇数位的所有数字相加。
- 将步骤 b 和步骤 c 的结果相加。
- 如果步骤d的结果能被10整除,则卡号有效;否则无效。例如号码 4388576018402626 无效,但号码 4388576018410707 有效。
我的问题是我仍在学习方法(完全是初学者。我去年曾尝试学习编码并放弃了,但这次我设法做到了这一点)我不知道如何使用这些方法来执行 Luhn 检查中的第 4 步和第 5 步。
有人可以帮我吗?谢谢!!
public static boolean isValid(String x) {
return false; // Stub method
}
public static void AddResults() {
}
public static void OddDigits(String s) {
int sum = 0;
for (int index = 0; index < s.length(); index ++) {
if (index % 2 != 0) {
sum = sum + Character.getNumericValue(s.charAt(index));
}
}
return;
}
public static int DoubleToSingle(int x) { // Adds up the digits in a two-digit number.
if (x < 10) {
return x;
}
else {
int firstDigit = x % 10;
int secondDigit = (int)(x / 10);
return firstDigit + secondDigit;
}
}
public static void Doubling(String s) {
int sum = 0;
for (int index = s.length() - 1; index > 0; index-= 2) {
int parse = Character.getNumericValue(s.charAt(index));
if (parse > 9) {
sum = sum + DoubleToSingle(parse);
}
else {
sum = sum + parse;
}
}
return;
}
public static boolean CheckLength(String s) {
if (s.length() < 13 || s.length() > 16) { // If the cc number is smaller than 13 digits or larger than 16 digits, it's invalid
return false;
}
else {
return true;
}
}
public static String ReadString(Scanner s) { // Creating a string method. (Using it to practice creating methods)
String x = s.nextLine();
return x;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please input a valid Credit Card number: ");
String CC = ReadString(input);
if (isValid(CC) == true) {
System.out.println(CC + " is valid.");
} else {
System.out.println(CC + " is invalid.");
}
input.close();
}
【问题讨论】: