Skip to content

Commit 7f28e86

Browse files
committed
Add random card number generator
1 parent 30d2ac4 commit 7f28e86

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
*
3+
* Credit Card Number
4+
* https://github.com/sualeh/credit_card_number
5+
* Copyright (c) 2014-2024, Sualeh Fatehi.
6+
*
7+
*/
8+
9+
package com.example;
10+
11+
import java.util.Random;
12+
13+
public class CardNumberGenerator {
14+
15+
public static int calculateCheckDigit(final String cardNumber) {
16+
int sum = 0;
17+
boolean alternate = true;
18+
19+
for (int i = cardNumber.length() - 1; i >= 0; i--) {
20+
int n = Integer.parseInt(cardNumber.substring(i, i + 1));
21+
22+
if (alternate) {
23+
n *= 2;
24+
if (n > 9) {
25+
n = n % 10 + 1;
26+
}
27+
}
28+
29+
sum += n;
30+
alternate = !alternate;
31+
}
32+
33+
return (10 - sum % 10) % 10;
34+
}
35+
36+
public static String generateRandomCardNumber(final String bin) {
37+
final Random random = new Random();
38+
final StringBuilder cardNumber = new StringBuilder(bin);
39+
40+
// Generate the remaining digits except the last one
41+
while (cardNumber.length() < 15) {
42+
cardNumber.append(random.nextInt(10));
43+
}
44+
45+
// Calculate the check digit
46+
final int checkDigit = calculateCheckDigit(cardNumber.toString());
47+
cardNumber.append(checkDigit);
48+
49+
return cardNumber.toString();
50+
}
51+
52+
public static void main(final String[] args) {
53+
final String bin = args[0];
54+
final String cardNumber = generateRandomCardNumber(bin);
55+
System.out.println("Generated Card Number: " + cardNumber);
56+
}
57+
}

0 commit comments

Comments
 (0)