Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

1. Credit card numbers follow certain patterns. A credit card number must have between 13 and 16 digits. It must start with 4 for Visa

1. 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 for Discover cards

In 1954, Hans Luhn of IBM proposed an algorithm for validating credit card numbers. The algorithm is useful to determine whether a card number is entered correctly, or whether a credit card is scanned correctly by a scanner. Credit card numbers are generated following this validity check, commonly known as the Luhn check or the Mod 10 check, which can be described as follows:

Consider the card number 4388576018402626:

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) Now add all single-digit numbers 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.

6+6+0+8+0+7+8+3=38

4) Sum the results from Step 2 and Step 3.

37+38=75

5) If the result from Step 4 is divisible by 10, the card number is valid; otherwise, it is invalid. For example, the number 4388576018402626 is invalid, but the number 4388576018410707 is valid.

2. Write a Java program that prompts the user to enter a credit card number as a long integer. Display whether the number is valid or invalid. Design your program to use the following methods:

/** Return true if the card number is valid */

public static boolean isValid(long number)

/** Get the result from Step 2 */ public static int sumOfDoubleEvenPlace(long number)

/** Return this number if it is a single digit, otherwise, * return the sum of the two digits */

public static int getDigit(int number)

/** Return sum of odd-place digits in number */

public static int sumOfOddPlace(long number)

/** Return true if the number d is a prefix for number */

public static boolean prefixMatched(long number, int d)

/** Return the number of digits in d */

public static int getSize(long d)

/** Return the first k number of digits from number. If the * number of digits in number is less than k, return number. */

public static long getPrefix(long number, int k)

Sample Run: Enter a credit card number as a long integer: 4388576018410707

4388576018410707 is valid Enter a credit card number as a long integer: 4388576018402626

4388576018402626 is invalid

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions

Question

Identify and control your anxieties

Answered: 1 week ago

Question

Understanding and Addressing Anxiety

Answered: 1 week ago