package creditcard; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.IOException; public class Card { //Declarations private String cardNumber; private boolean test = false; private String cardType = "Unknown"; public Card(){ cardNumber = "0"; }//end Default Constructor public Card(String input){ cardNumber = input; }//end Constructor // public void typeMatcher(){ if (cardNumber.startsWith("37")) cardType = "American Express"; if (cardNumber.startsWith("4")) cardType = "Visa"; if (cardNumber.startsWith("5")) cardType = "Mastercard"; if (cardNumber.startsWith("6")) cardType = "Discover"; }//end typeMatcher // Returns true if card number is Valid. public boolean isValid(String cardNumber){ if (cardNumber.length() > 12 && cardNumber.length() < 17) if((sumOfDoubleEvenPlace(cardNumber)+sumOfOddPlace(cardNumber))/10==0) test = true; return test; }//end isValid // Get result from Step 2. public int sumOfDoubleEvenPlace(String cardNumber){ int sum = 0; int num = 0; for (int i = cardNumber.length()-2; i>-1; i-=2){ num = Integer.parseInt(cardNumber.substring(i,i+1)); if (num<10) sum+=(num*2); else sum+=getDigit(num); }//end for System.out.println(sum); return sum; }//end SumOfDoubleEvenPlace // Return this number if it is a single digit // Otherwise return the sum of the two digits. public int getDigit (int num){ int no1 = num/10; int no2 = num%10; return no1+no2; }//end getDigit // Returns sum of odd place digits in number. public int sumOfOddPlace(String cardNumber){ int sum = 0; for (int i = cardNumber.length()-1; i>-1; i-=2) sum += Integer.parseInt(cardNumber.substring(i,i)); System.out.println(sum); return sum; }//end sumOfOddPlace public void writeToFile(){ try{ FileWriter fw = new FileWriter("G:\\Output.txt",true); BufferedWriter bw = new BufferedWriter(fw); if (isValid(cardNumber)){ bw.write(cardNumber+" is a valid "+cardType+" card."); bw.newLine(); }//end if else{ bw.write(cardNumber+" is an invalid "+cardType+" card."); bw.newLine(); }//end else bw.close(); System.out.println("Success"); }//end try catch(IOException ioe){ ioe.printStackTrace(); }//end catch }//end outputToFile }//end Card