Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Credit card numbers follow certain pattern. A credit card number must be 16 digi

ID: 3623632 • Letter: C

Question

Credit card numbers follow certain pattern. A credit card number must be 16 digits, and must start with
• 4 for Visa cards
• 5 for Master cards
• 37 for American Express cards
• 6 for Discover cards
Suppose that you were asked to write down a Java program that validates the credit card number (if it is correct or not!). Here are the rules that determine the correctness of credit card number:
Suppose the credit card number = 4388576018402625
1) Double every second digit from right to left. If doubling of a digit results in a two-digit number, add up the two digits to get a single digit number:
2*2 = 4
2*2 = 4
4*2 = 8
1*2 = 2
6*2 = 12 (1 + 2) = 3
5*2 = 10 (1 + 0) = 1
8*2 = 16 (1 +6) = 7
4*2 = 8

2) Now add all single-digit number from step 1 (4+4+8+2+3+1+7+8 = 37)

3) Add all digits in the odd places from right to left in the card number:
5+6+0+8+0+7+8+3 = 37

4) Sum the results from step 2 and 3
37 + 37 = 74

5) If the result in step 4 is divisible by 10, then credit card is valid, else it is not valid.
74 is not divisible by 10, so it is not valid!
Have the user input a number using the long number.
Have the program use multiple methods to return information

Explanation / Answer

//CreditCard class to validate cards. import java.io.*; public class CreditCard{ public static void main(String []args){ long cardNumber=getInputNumber(); long[] number=putNumberToArray(cardNumber); int sumEven=getSumSecondFromRight(number); int sumOdd=getOddSum(number); int totalSum=sumEven+sumOdd; if(validateCard(totalSum)) System.out.println("Card is Valid"); else System.out.println("card is invalid"); } //put each digit of card number into array public static long[] putNumberToArray(long cardNumber){ long [] number=new long[16]; for(int i = number.length-1;i>=0;i--){ number[i]=cardNumber%10; cardNumber=cardNumber/10; } return number; } //geting sum of double of second number from right public static int getSumSecondFromRight(long [] number){ int sumEven=0; for(int k=number.length-2;k>=0;k-=2){ number[k]=number[k]*2; if(number[k]>9){ long rem=number[k]%10; number[k]=number[k]/10; number[k]=number[k]+rem; } sumEven+=number[k]; } return sumEven; } //getting sum of mumbers at odd places public static int getOddSum(long [] number){ int oddSum=0; for(int j=number.length-1;j>=0;j-=2){ oddSum+=number[j]; } return oddSum; } //method to validate card public static boolean validateCard(int totalSum){ boolean valid=false; if(totalSum%4 == 0) valid=true; return valid; } //getting number from console public static long getInputNumber(){ System.out.println("Please Enter Your Card Number"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String num=null; long cardNumber=0; boolean flag=true; try { num=br.readLine(); if(num.length() < 16 || num.length() >16){ System.out.println("Wrong Number Entered"); cardNumber=getInputNumber(); } else { cardNumber=Long.parseLong(num); } } catch(Exception e){ e.printStackTrace(); } return cardNumber; } } /* Note : the array type is long.since during casting it gives wrong values.when you declare and initialize long variables ,use l as a suffix like : long cardNumber=4388576018402625l; */
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote