Revision: 7765
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 12, 2008 02:03 by Uzbekjon
Initial Code
/** * Test harness for an implementation of the Luhn algorithm that checks the * validity of a credit card number. */ public class Luhn { /** * Main entry point for the test harness. * * @param args the command line arguments. */ public static void main(String[] args) { if (args.length < 1) { System.err.println("Usage: Luhn number ..."); System.exit(1); } for (int i = 0; i < args.length; i++) { System.out.print("Number '" + args[i] + "'" ); if (!args[i].matches("^\\d{13,19}$")) { System.out.println(" is not a valid credit card number (must be 13-19 digits)"); } else if (isValidNumber(args[i])) { System.out.println(" is a valid credit card number"); } else { System.out.println(" is not a valid credit card number"); } } } /** * Checks whether a string of digits is a valid credit card number according * to the Luhn algorithm. * * 1. Starting with the second to last digit and moving left, double the * value of all the alternating digits. For any digits that thus become * 10 or more, add their digits together. For example, 1111 becomes 2121, * while 8763 becomes 7733 (from (1+6)7(1+2)3). * * 2. Add all these digits together. For example, 1111 becomes 2121, then * 2+1+2+1 is 6; while 8763 becomes 7733, then 7+7+3+3 is 20. * * 3. If the total ends in 0 (put another way, if the total modulus 10 is * 0), then the number is valid according to the Luhn formula, else it is * not valid. So, 1111 is not valid (as shown above, it comes out to 6), * while 8763 is valid (as shown above, it comes out to 20). * * @param number the credit card number to validate. * @return true if the number is valid, false otherwise. */ private static boolean isValidNumber(String number) { int sum = 0; boolean alternate = false; for (int i = number.length() - 1; i >= 0; i--) { int n = Integer.parseInt(number.substring(i, i + 1)); if (alternate) { n *= 2; if (n > 9) { n = (n % 10) + 1; } } sum += n; alternate = !alternate; } return (sum % 10 == 0); } }
Initial URL
http://www.chriswareham.demon.co.uk/software/Luhn.java
Initial Description
Test harness for an implementation of the Luhn algorithm that checks the validity of a credit card number.
Initial Title
Luhn Formula (Algorithm)
Initial Tags
class, validation
Initial Language
Java