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

For Java Programming Step 1. Double every second digit from right to left. If do

ID: 3713147 • Letter: F

Question

For Java Programming

Step 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

Step 2. Now add all single-digit numbers from Step 1.

4 + 4 + 8 + 2 + 3 + 1 + 7 + 8 = 37

Step 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

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

37 + 38 = 75

Step 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.

Program Requirements:

Write a program that accepts a credit card number from Cmd argument list and display whether the number is valid or invalid. Your program must define and use following methods (at least)

boolean isValid(long number)

// returns true if the card number is valid

int sumOfDoubleEvenPlace(long number)

// gets the result from steps 1 and 2 above

int sumOfOddPlace(long number)

// gets sum of odd place digits in number from step 3 above

void main(String[] args)

// test program that takes input and displays output by invoking necessary methods

Explanation / Answer

// Java program to check if a given credit

// card is valid or not.

import java.util.Scanner;

public class CreditCard {

// Main Method

public static void main(String[] args)

{

long number = 5196081888500645L;

System.out.println(number + " is " +

(isValid(number) ? "valid" : "invalid"));

}

// Return true if the card number is valid

public static boolean isValid(long number)

{

return (getSize(number) >= 13 &&

getSize(number) <= 16) &&

(prefixMatched(number, 4) ||

prefixMatched(number, 5) ||

prefixMatched(number, 37) ||

prefixMatched(number, 6)) &&

((sumOfDoubleEvenPlace(number) +

sumOfOddPlace(number)) % 10 == 0);

}

// Get the result from Step 2

public static int sumOfDoubleEvenPlace(long number)

{

int sum = 0;

String num = number + "";

for (int i = getSize(number) - 2; i >= 0; i -= 2)

sum += getDigit(Integer.parseInt(num.charAt(i) + "") * 2);

return sum;

}

// Return this number if it is a single digit, otherwise,

// return the sum of the two digits

public static int getDigit(int number)

{

if (number < 9)

return number;

return number / 10 + number % 10;

}

// Return sum of odd-place digits in number

public static int sumOfOddPlace(long number)

{

int sum = 0;

String num = number + "";

for (int i = getSize(number) - 1; i >= 0; i -= 2)

sum += Integer.parseInt(num.charAt(i) + "");   

return sum;

}

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

public static boolean prefixMatched(long number, int d)

{

return getPrefix(number, getSize(d)) == d;

}

// Return the number of digits in d

public static int getSize(long d)

{

String num = d + "";

return num.length();

}

// 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)

{

if (getSize(number) > k) {

String num = number + "";

return Long.parseLong(num.substring(0, k));

}

return number;

}

}

Output:

5196081888500645 is valid

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