import java.util.*; public class CreditTryAll4 { public static void main(String[] args) { int numValid = 0, numInvalid = 0; // try all 4-digit credit card numbers for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { for (int k=0; k<10; k++) { for (int l=0; l<10; l++) { String cardNum = ""; cardNum = cardNum + i; // here, "+" concatenates strings cardNum = cardNum + j; cardNum = cardNum + k; cardNum = cardNum + l; // see if card is valid if ( (luhnSum(cardNum) % 10) == 0) { // yes! numValid++; } else { // no. numInvalid++; } } } } } System.out.println("num valid: " + numValid); System.out.println("num invalid: " + numInvalid); double percentValid; percentValid = 100.0 * ((double) numValid) / (double) (numInvalid + numValid); System.out.println("percent valid: " + percentValid); } // this method accepts a credit card number as a parameter, // computes the sum according to the Luhn algorithm, and // returns that sum public static int luhnSum(String number) { int sum = 0; // Add up the digits formed by doubling every other digit for (int i=number.length()-2; i>=0; i = i-2) { char c = number.charAt(i); int n = 2 * Character.getNumericValue(c); sum = sum + n/10 + n%10; // Break into two digits and add } // Add the remaining digits for (int i=number.length()-1; i>=0; i = i-2) { char c = number.charAt(i); int n = Character.getNumericValue(c); sum = sum + n; } return sum; } }