Advertisement
Omar_Natour

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

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