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

Word File Edit View Insert Format Font Tools Table Window Help LAT 4 80% Project

ID: 3571229 • Letter: W

Question

Word File Edit View Insert Format Font Tools Table Window Help LAT 4 80% Project 1301 CCcheck (2).doc [Compatibility Mode] n Home Layout Document Elements Tables Charts SmartArt Review Paragraph Times New Roman 12 AA A Aa AaBbccDI Emphasis leading 1 Heading 3 Project: Validating Credit Cards CSCI 1301 Introduction to Programming Principles Problem Description: Credit card numbers follow certain patterns. A credit card number must have between 13 and 16 digits. It must start with: 4 for Visa cards 5 for Master cards 37 for American Express cards 6 fol Discover cards in 1954, Hans Luhn of IBM proposed an algorithm for validating credit card numbers. The algorithm is useful to determine ifa card number is entered correctly or if a credit card is scanned correctly by a scanner. Almost all credit card numbers are generated following this validity check, commonly known as the Lubn check or the Mod 10 check. which can be described as follows (for illustration, consider the card number 4388376018402626 l. Double every second digit from right to left. If doubling ofa digit results in a two-digit number, add up the two digits to get a single-digit number. 2 2-4 4 2 8 2m2 6.2 2 33 8 2 16 (1 6-7) 2. Now add all single-digit numbers from Step 4 +4 +8+2+3 7 8 37 3. Add all digits in the odd places fromright to left in the card number. 6+ 6 8+ 0+ 7+ 8 3 38 Print Layout Vie Sec 1 of 2 Words: 0 of 388 GG Fri Dec 2 10 53 08 AM Q O Sea in Document Text Box Shape Picture Themes 00%

Explanation / Answer

package org.students;

import java.util.Scanner;

public class CreditCardValidatorModifiedByHarish {
   public static boolean isValid(long number){
  
   int total = SumofDoubleEvenPlace(number) + SumofOddPlace(number);
  
   if ((total % 10 == 0) && (prefixMatched(number, 1) == true) && (getSize(number)>=13) && (getSize(number)<=16)){
   return true;
   }else{
   return false;
   }
   }
   public static int getDigit(int number){
   if (number <= 9){
   return number;
   }else{
   int firstdigit = number % 10;
   int seconddigit = (int) (number / 10);
  
   return firstdigit + seconddigit;
   }
   }
  
   //This method finds the sum of digits of odd places
   public static int SumofOddPlace(long number){
   int result = 0;
   while (number > 0){
   result += (int) (number % 10);
   number = number / 100;
   }
   return result;
   }
   //This method finds the sum of digits by doubling the even places
   public static int SumofDoubleEvenPlace(long number){
  
       //Declaring variables
   int result = 0;
   long temp = 0;
  
   while(number > 0){
   temp = number % 100;
   result += getDigit((int) (temp / 10) * 2);
   number = number / 100;
   }
   return result;
   }
     
   //Based on the prefix number it displays the corresponding card name
   public static boolean prefixMatched(long number, int d){
     
   if ((getPrefix(number, d) == 4)
   || (getPrefix(number, d) == 5)
   || (getPrefix(number, d) == 37)
   ||(getPrefix(number, d) == 6)){
     
   if (getPrefix(number, d) == 4){
   System.out.println(" Visa Card");
   }else if (getPrefix(number, d) == 5){
   System.out.println(" Master Card");
   }else if (getPrefix(number, d) == 37){
   System.out.println(" American Express Card");
   }else if (getPrefix(number, d) == 6){
   System.out.println(" American Express Card");
   }
   return true;
   }else{
   return false;
   }
   }
  
  
   //This method finds the size of the credit card number
   public static int getSize(long d){
   int count = 0;
   while (d > 0){
   d = d / 10;
  
   count++;
   }
   return count;
   }
  
  
   public static long getPrefix(long number, int k){
  
   if (getSize(number) < k){
   return number;
   }else{
   int size = (int) getSize(number);
  
   for (int i = 0; i < (size - k); i++){
   number = number / 10;
   }
   return number;
   }
  
   }
   public static void main(String[] args) {
  
       //Scanner class object is used to read the inputs entered by the user
   Scanner key = new Scanner(System.in);
     
     
   //Getting the credit card number entered by the user
   System.out.println("Enter a credit card number");
     
   long input = key.nextLong();
     
   /* If the credit card number is valid the display
   * the valid message if not display invalid message
   */
   if (isValid(input) == true){
   System.out.println(" " + input + " Is valid");
   }else{
   System.out.println(" " + input + " Is not valid");
   }
   }
   }

________________________

output#1:

Enter a credit card number
4388576018410707

Visa Card

4388576018410707 Is valid

___________________

Output#2:

Enter a credit card number
4246345689049834

4246345689049834 Is not valid

________Thank You

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