Question: import java.util.Scanner; public class CreditCard { public static void main(String[] args) { long cardNumber = 0; Scanner input = new Scanner(System.in); //Scanner System.out.print(Enter credit card

import java.util.Scanner;

public class CreditCard {

public static void main(String[] args) {

long cardNumber = 0;

Scanner input = new Scanner(System.in); //Scanner

System.out.print("Enter credit card number as a long integer: ");

cardNumber = input.nextLong();

if(isValid(cardNumber)) {

System.out.println( cardNumber + " is valid.");

} else {

System.out.println(cardNumber + " is invalid.");

}

}

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

public static boolean isValid(long number) {

//Big test condition - right sum, number of digits, prefix

if( ((sumOfOddPlace(number) + sumOfDoubleEvenPlace(number))%10 == 0 )

&& (getSize(number) <= 16 && getSize(number) >= 13)

&& (prefixMatched(number, 4)

|| prefixMatched(number, 5)

|| prefixMatched(number, 37)

|| prefixMatched(number, 6)) ) return true;

else return false;

}

/** Get the result from Step 2 */

public static int sumOfDoubleEvenPlace(long number) {

int numDigits = getSize(number)-1;

int sum = 0;

number/=10;

for(int i = 0; i < numDigits; i+=2) {

sum+= getDigit((int) ( 2 * (number % 10)));

number /= 100;

}

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

return ((number - number % 10) / 10 ) + number % 10;

}

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

public static int sumOfOddPlace(long number) {

int numberOfDigits = getSize(number);

int sum = 0;

for(int i = 0; i < numberOfDigits; i+=2) {

sum+= number%10;

number /= 100;

}

return sum;

}

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

public static boolean prefixMatched(long number,int d) {

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

else return false;

}

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

public static int getSize(long d) {

int n = 0;

while(d != 0) {

d /= 10;

n++;

}

return n;

}

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

int numberOfDigits = getSize(number);

if(numberOfDigits - k > 0) {

for ( int i = 0; i < numberOfDigits - k; i++) {

number /= 10;

}

return number;

} else return number;

}

}

please make uml class diagram,flowchart and pseudocode thank you

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!