Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Name: Omar Natour
- * Date: 11/9/2015
- * Course Number: CSC-111 D01
- * Course Name: Introduction to Java Programming
- * Problem Number: 5.31
- * Email: Ojnatour0001@student.stcc.edu
- * Problem Description: Check if credit card number is valid
- */
- import java.util.Scanner;
- public class CreditCardV {
- public static void main(String args[]) {
- final String TITLE = "Credit Card Validator";
- final String CONTINUE_PROMPT = "Do this again? [y/N] ";
- System.out.println("Welcome to " + TITLE);
- Scanner sc = new Scanner(System.in);
- do {
- System.out.println();
- process(sc, args);
- System.out.println();
- } while (doThisAgain(sc, CONTINUE_PROMPT));
- sc.close();
- System.out.println();
- System.out.println("Thank you for using " + TITLE);
- }
- // ************************************************************************
- private static boolean doThisAgain(Scanner sc, String prompt) {
- System.out.print(prompt);
- String doOver = sc.nextLine();
- return doOver.equalsIgnoreCase("Y");
- }
- // ************************************************************************
- private static void process(Scanner sc, String args[]) {
- // Code here is merely a sample
- System.out.print("Enter Credit Card No: ");
- long ccn = sc.nextLong();
- sc.nextLine(); // IMPORTANT!! Reset Scanner after retrieving values for
- // process
- if (isValid(ccn))
- System.out.println("Credit Card Number is Valid!");
- else
- System.out.println("Credit Card Number is NOT Valid!");
- }
- // ************************************************************************
- public static boolean isValid(long ccn) {
- if (ccn <= 0)
- return false;
- int size = getSize(ccn);
- if (size < 13 || size > 16)
- return false;
- if (!(prefixMatched(ccn)))
- return false;
- return (sumOfDoubleEvenPlace(ccn) + sumOfOddPlace(ccn)) % 10 == 0;
- }
- public static int sumOfDoubleEvenPlace(long number) {
- int sum = 0;
- while (number > 0) {
- int last2Digits = (int) (number % 100);
- int evenDigit = last2Digits / 10;
- sum = sum + getDigit(2 * evenDigit);
- number = number / 100;
- }
- return sum;
- }
- public static int getDigit(int number) {
- if (number <= 9)
- return number;
- else
- return number / 10 + number % 10;
- }
- public static int sumOfOddPlace(long number) {
- int sum = 0;
- while (number > 0) {
- int last2Digits = (int) (number % 10);
- sum = sum + getDigit(last2Digits);
- number = number / 100;
- }
- return sum;
- }
- public static boolean prefixMatched(long number) {
- if (getPrefix(number) == 4 || (getPrefix(number) == 5 || (getPrefix(number) == 37 || (getPrefix(number) == 6))))
- return true;
- else
- return false;
- }
- public static int getSize(long d) {
- int count = 0;
- while (d > 0) {
- d = d / 10;
- count++;
- }
- return count;
- }
- public static long getPrefix(long number) {
- while (number > 9) {
- number /= 10;
- if (number == 37)
- break;
- }
- return number;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement