Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

Luhn check for Credit Card Validation code

$
0
0
My code doesn't work, and I'm looking to validate credit card numbers using the Luhn check. I'm stuck and unsure what else it is that i need to do.

package validatecc1;
import java.util.*; // Imports objects such as Scanner.

public class ValidateCC1 {

    public static final int INVALID = -1;
    public static final int VISA = 0;
    public static final int MASTERCARD = -1;
    public static String [] cardNames = 
{
    "Visa Card",
    "Mastercard Card",
};
    
  // Method to test that digits are only entered.
    
      private static String getDigitsOnly (String s) 
      {
        StringBuffer digitsOnly = new StringBuffer ();
        char c;
        for (int i = 0; i < s.length (); i++) 
        {
            c = s.charAt (i);
            if (Character.isDigit (c)) 
            {
                digitsOnly.append (c);
            }
        }
        return digitsOnly.toString ();
      }
      
    // Method to run the Luhn check.
      
public static boolean isValid(String cardNumber)
{
 String digitsOnly = getDigitsOnly(cardNumber);
        int sum = 0;
        int digit = 0;
        int addend = 0;
        boolean timesTwo = false;
        for (int i = digitsOnly.length () - 1; i >= 0; i--) {
            digit = Integer.parseInt (digitsOnly.substring (i, i + 1));
            if (timesTwo) {
                addend = digit * 2;
                if (addend > 9) {
                    addend -= 9;
                }
            } else {
                addend = digit;
            }
            sum += addend;
            timesTwo = !timesTwo;
        }
        int modulus = sum % 10;
        return modulus == 0;
}

  // Method to find the Sum of Even places in reverse.

public static int sumOfDoubleEvenPlace(String cardNumber)
{
  int result = 0;
  long start = 0;
  String digits = Long.toString(number);
  if ((digits.length() % 2) == 0) 
  {
   start = digits.length() - 1; 
  }
    else 
  {
    start = digits.length() - 2; 
  }
      while (start != 0) 
      {
        result += (int) ((((start % 10) * 2) % 10) + (((start % 10) * 2) / 2));
        start = start / 100;
}
        return result;  
}

  // Method to 

public static int getDigit(int number)
{
    return number % 10 + (number / 10);
}
public static int sumOfOddPlace(String cardNumber)
{
  int result = 0;
  while (number != 0) 
  {
    result += (int) (number % 10);
    number = number / 100;
   }
    return result;   
}
public static boolean prefixMatched(long number, int d)
{
    return getPrefix(number, getSize(d)) == d;
}
public static int getSize(long d)
{
     int numberOfDigits = 0;
     String sizeString = Long.toString(d);
     numberOfDigits = sizeString.length();
     return numberOfDigits;
}
public static long getPrefix(long number, int k)

{
 String size = Long.toString(number);
   if (size.length() <= k)
    {
     return number; 
    }
      else
{    
    return Long.parseLong(size.substring(0, k));
}
}

    public static void main(String[] args) {
     Scanner input = new Scanner(System.in);
     System.out.print("Enter a credit card number as a long integer: ");
     long number = input.nextLong();
     if (isValid(number)) 
   {
     System.out.println(number + " is valid");
   }
     else 
   {
     System.out.println(number + " is invalid");
   }
   }
}


Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>