Guest User

Untitled

a guest
Jan 23rd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.52 KB | None | 0 0
  1. /* Author: Greg Koumis
  2.  * Class: CS 1150
  3.  * Assignment: Lab 3 5.31
  4.  * Teacher: Terry Spence
  5.  * Due Date: 10/13/2011
  6.  * Summary: user inputs a credit card number and prgram outputs whether or not the number is valid or invalid
  7.  */
  8.  
  9. import java.util.Scanner;
  10.  
  11. public class Lab3 {
  12.     /** Return true if the card number is valid */
  13.     public static boolean isValid(long number){
  14.         int sum = sumOfDoubleEvenPlace(number) + sumOfOddPlace(number);
  15.         if((sum%10) == 0){
  16.             if (prefixMatched(number)){
  17.                 if(getSize(number) > 12 && getSize(number) < 17){
  18.                     return true;
  19.                 } else {
  20.                     return false;
  21.                 }                
  22.             } else {
  23.                 return false;
  24.             }          
  25.         }else{
  26.             return false;
  27.         }
  28.     }
  29.    
  30.     /** Get the result from Step 2*/
  31.     public static int sumOfDoubleEvenPlace(long number){
  32.         int size = getSize(number);
  33.         int num = 0;
  34.         number = number / 10;
  35.        
  36.         for (int i = 0; i < size; i +=2){
  37.             long d = number % 10;
  38.             int digit = (int)d * 2;
  39.             number = number / 100;
  40.             num = num + getDigit(digit);
  41.         }
  42.         return num;
  43.     }
  44.    
  45.     /** Return this number if it is a single digit, otherwise , return
  46.      * the sum of the two digits */
  47.     public static int getDigit(int number){
  48.         if ((number / 10) > 0){
  49.             int d = number / 10;
  50.             int n = number % 10;
  51.             return d + n;
  52.         }else{
  53.             return number;
  54.         }
  55.     }
  56.            
  57.     /** Return sum of odd place digits in number */
  58.     public static int sumOfOddPlace(long number){
  59.         int size = getSize(number);
  60.         int num = 0;
  61.        
  62.         for (int i = 0; i < size; i +=2){
  63.             long d = number % 10;
  64.             number = number / 100;
  65.             num = num + (int)d;
  66.         }
  67.         return num;
  68.     }
  69.      
  70.     /** Return true if the digit d is a prefix for number */
  71.     public static boolean prefixMatched(long number){
  72.         int prefix = getPrefix(number, 2);
  73.        
  74.         if (prefix == 4 || prefix == 37 || prefix == 6 || prefix ==5){
  75.             return true;
  76.         } else {
  77.             return false;
  78.         }
  79.     }
  80.    
  81.     /**Return the number of digits in d */
  82.     public static int getSize(long d){
  83.         int size = 0;
  84.        
  85.         while (d > 0){
  86.             size++;
  87.             d = d / 10;
  88.         }
  89.         return size;
  90.     }
  91.    
  92.     /** Return the first k number of digits from number. If the
  93.      * number of digits in is less than k, return number*/
  94.     public static int getPrefix(long number, int k){
  95.         int size = getSize(number);
  96.        
  97.         for(int i = 0; i < (size - 2); i++){
  98.             number = number / 10;
  99.         }
  100.        
  101.         if (number == 37){
  102.             return (int)number;
  103.         } else {
  104.             number = number / 10;
  105.         }
  106.         return (int)number;
  107.     }
  108.            
  109.      //Asks the user for inmput of a credit card number and outpust whether it is valid or invalid
  110.      public static void main(String[] args){
  111.         Scanner input = new Scanner(System.in);
  112.         System.out.println("enter a credit card number");
  113.         long cardNo = input.nextLong();
  114.        
  115.         if (isValid(cardNo)){
  116.             System.out.println("The number is valid!");
  117.         } else {
  118.             System.out.println("The number is invalid...");
  119.         }
  120.     }
  121.    
  122. }
Add Comment
Please, Sign In to add comment