File tree Expand file tree Collapse file tree 1 file changed +57
-0
lines changed
src/test/java/com/example Expand file tree Collapse file tree 1 file changed +57
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments