Question: Java I need my required output to look like Enter a filename credit-cards-1.datENTER Credit card number: 3782 8224 6310 005 Checksum: 60 Card status: VALID
Java
I need my required output to look like
Enter a filename credit-cards-1.datENTER Credit card number: 3782 8224 6310 005 Checksum: 60 Card status: VALID Credit card number: 3714 4963 5398 431 Checksum: 80 Card status: VALID Credit card number: 3787 3449 9671 000 Checksum: 66 Card status: INVALID Credit card number: 5610 5990 8101 8250 Checksum: 47 Card status: INVALID Credit card number: 3096 9309 0259 04 Checksum: 58 Card status: INVALID Credit card number: 3852 0009 8232 37 Checksum: 56 Card status: INVALID Credit card number: 3787 3449 3671 000 Checksum: 60 Card status: VALID Credit card number: 5610 5910 8101 1250 Checksum: 35 Card status: INVALID Credit card number: 3056 9309 0259 04 Checksum: 50 Card status: VALID Credit card number: 3852 0000 0232 37 Checksum: 40 Card status: VALID Credit card number: 6011 1111 1111 1117 Checksum: 30 Card status: VALID however, my spacing is not right for the credit card number
it needs to be
3852 0000 0232 37 .. etc
it comes out like
38520000023237
Please help with this spacing without changing too much to my code since it works with everything besides the spacing
here is my code: import java.io.DataInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Scanner; public class CreditCard { public static void main(String[] args) throws IOException { Scanner keyboard = new Scanner(System.in); System.out.println("Enter a filename"); String input = keyboard.nextLine(); try { FileInputStream basic = new FileInputStream(input); DataInputStream inputFile = new DataInputStream(basic); while (inputFile.available() > 0) { long data = inputFile.readLong(); String s = String.valueOf(data); int sum = 0; int len = s.length(); int sp = 0; for (int i = len - 2; i >= 0; i -= 2) { int d = (s.charAt(i) - '0') * 2; d = d % 10 + (d / 10) % 10; sum += d; } sp = 0; for (int i = len - 1; i >= 0; i -= 2) { sum += s.charAt(i) - '0'; } System.out.printf("Credit card number: %s ", s); System.out.printf("Checksum: %d ", sum); System.out.print("Card status: "); if (sum % 10 == 0) System.out.println("VALID"); else System.out.println("INVALID"); s = String.valueOf(data); } inputFile.close(); } catch (FileNotFoundException e) { System.out.println("File not found."); } } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
