Omar_Natour

Natour, O. 11/9/15 Csc-111-D01 Hw 5.31

Nov 9th, 2015
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.98 KB | None | 0 0
  1. /*
  2.  * Name: Omar Natour
  3.  * Date: 11/9/2015
  4.  * Course Number: CSC-111 D01
  5.  * Course Name: Introduction to Java Programming
  6.  * Problem Number: 5.31
  7.  * Problem Description: Check if credit card number is valid
  8.  */
  9.  
  10. import java.util.Scanner;
  11.  
  12. public class CreditCardV {
  13.  
  14.     public static void main(String args[]) {
  15.         final String TITLE = "Credit Card Validator";
  16.         final String CONTINUE_PROMPT = "Do this again? [y/N] ";
  17.  
  18.         System.out.println("Welcome to " + TITLE);
  19.         Scanner sc = new Scanner(System.in);
  20.         do {
  21.             System.out.println();
  22.             process(sc, args);
  23.             System.out.println();
  24.         } while (doThisAgain(sc, CONTINUE_PROMPT));
  25.         sc.close();
  26.  
  27.         System.out.println();
  28.         System.out.println("Thank you for using " + TITLE);
  29.     }
  30.  
  31.     // ************************************************************************
  32.  
  33.     private static boolean doThisAgain(Scanner sc, String prompt) {
  34.         System.out.print(prompt);
  35.         String doOver = sc.nextLine();
  36.         return doOver.equalsIgnoreCase("Y");
  37.     }
  38.  
  39.     // ************************************************************************
  40.  
  41.     private static void process(Scanner sc, String args[]) {
  42.         // Code here is merely a sample
  43.         System.out.print("Enter Credit Card No: ");
  44.         long ccn = sc.nextLong();
  45.         sc.nextLine(); // IMPORTANT!! Reset Scanner after retrieving values for
  46.                         // process
  47.  
  48.         if (isValid(ccn))
  49.             System.out.println("Credit Card Number is Valid!");
  50.         else
  51.             System.out.println("Credit Card Number is NOT Valid!");
  52.     }
  53.  
  54.     // ************************************************************************
  55.  
  56.     public static boolean isValid(long ccn) {
  57.         if (ccn <= 0)
  58.             return false;
  59.  
  60.         int size = getSize(ccn);
  61.         if (size < 13 || size > 16)
  62.             return false;
  63.  
  64.         if (!(prefixMatched(ccn)))
  65.             return false;
  66.  
  67.         return (sumOfDoubleEvenPlace(ccn) + sumOfOddPlace(ccn)) % 10 == 0;
  68.     }
  69.  
  70.    
  71.     public static int sumOfDoubleEvenPlace(long number) {
  72.         int sum = 0;
  73.         while (number > 0) {
  74.             int last2Digits = (int) (number % 100);
  75.             int evenDigit = last2Digits / 10;
  76.  
  77.             sum = sum + getDigit(2 * evenDigit);
  78.             number = number / 100;
  79.  
  80.         }
  81.         return sum;
  82.     }
  83.  
  84.     public static int getDigit(int number) {
  85.         if (number <= 9)
  86.             return number;
  87.         else
  88.             return number / 10 + number % 10;
  89.     }
  90.  
  91.     public static int sumOfOddPlace(long number) {
  92.         int sum = 0;
  93.         while (number > 0) {
  94.             int last2Digits = (int) (number % 10);
  95.  
  96.             sum = sum + getDigit(last2Digits);
  97.             number = number / 100;
  98.  
  99.         }
  100.         return sum;
  101.     }
  102.  
  103.     public static boolean prefixMatched(long number) {
  104.         if (getPrefix(number) == 4 || (getPrefix(number) == 5 || (getPrefix(number) == 37 || (getPrefix(number) == 6))))
  105.             return true;
  106.         else
  107.             return false;
  108.     }
  109.  
  110.     public static int getSize(long d) {
  111.         int count = 0;
  112.         while (d > 0) {
  113.             d = d / 10;
  114.             count++;
  115.         }
  116.         return count;
  117.     }
  118.  
  119.     public static long getPrefix(long number) {
  120.         while (number > 9) {
  121.             number /= 10;
  122.             if (number == 37)
  123.                 break;
  124.         }
  125.  
  126.         return number;
  127.     }
  128.    
  129. }
Advertisement
Add Comment
Please, Sign In to add comment