Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Author: Greg Koumis
- * Class: CS 1150
- * Assignment: Lab 3 5.31
- * Teacher: Terry Spence
- * Due Date: 10/13/2011
- * Summary: user inputs a credit card number and prgram outputs whether or not the number is valid or invalid
- */
- import java.util.Scanner;
- public class Lab3 {
- /** Return true if the card number is valid */
- public static boolean isValid(long number){
- int sum = sumOfDoubleEvenPlace(number) + sumOfOddPlace(number);
- if((sum%10) == 0){
- if (prefixMatched(number)){
- if(getSize(number) > 12 && getSize(number) < 17){
- return true;
- } else {
- return false;
- }
- } else {
- return false;
- }
- }else{
- return false;
- }
- }
- /** Get the result from Step 2*/
- public static int sumOfDoubleEvenPlace(long number){
- int size = getSize(number);
- int num = 0;
- number = number / 10;
- for (int i = 0; i < size; i +=2){
- long d = number % 10;
- int digit = (int)d * 2;
- number = number / 100;
- num = num + getDigit(digit);
- }
- return num;
- }
- /** Return this number if it is a single digit, otherwise , return
- * the sum of the two digits */
- public static int getDigit(int number){
- if ((number / 10) > 0){
- int d = number / 10;
- int n = number % 10;
- return d + n;
- }else{
- return number;
- }
- }
- /** Return sum of odd place digits in number */
- public static int sumOfOddPlace(long number){
- int size = getSize(number);
- int num = 0;
- for (int i = 0; i < size; i +=2){
- long d = number % 10;
- number = number / 100;
- num = num + (int)d;
- }
- return num;
- }
- /** Return true if the digit d is a prefix for number */
- public static boolean prefixMatched(long number){
- int prefix = getPrefix(number, 2);
- if (prefix == 4 || prefix == 37 || prefix == 6 || prefix ==5){
- return true;
- } else {
- return false;
- }
- }
- /**Return the number of digits in d */
- public static int getSize(long d){
- int size = 0;
- while (d > 0){
- size++;
- d = d / 10;
- }
- return size;
- }
- /** Return the first k number of digits from number. If the
- * number of digits in is less than k, return number*/
- public static int getPrefix(long number, int k){
- int size = getSize(number);
- for(int i = 0; i < (size - 2); i++){
- number = number / 10;
- }
- if (number == 37){
- return (int)number;
- } else {
- number = number / 10;
- }
- return (int)number;
- }
- //Asks the user for inmput of a credit card number and outpust whether it is valid or invalid
- public static void main(String[] args){
- Scanner input = new Scanner(System.in);
- System.out.println("enter a credit card number");
- long cardNo = input.nextLong();
- if (isValid(cardNo)){
- System.out.println("The number is valid!");
- } else {
- System.out.println("The number is invalid...");
- }
- }
- }
Add Comment
Please, Sign In to add comment