package Q3; import java.util.*; public class CreditCard { private int evenSum; private int oddSum; private int sum; private String ccNumber; private String company; public CreditCard(String num) { this.ccNumber = num; this.company = this.identifyCompany(num); String reversed = new StringBuilder(num).reverse().toString(); for (int i = 0; i < reversed.length(); i++) { if (!Character.isDigit(reversed.charAt(i))) break; int digit = Character.getNumericValue(reversed.charAt(i)); if ((i + 1) % 2 == 0) { } else { this.oddSum += digit; } } } public int getEvenSum() { return evenSum; } public int getOddSum() { return oddSum; } public int getSum() { return sum; } public String getCcNumber() { return this.ccNumber; } public String getCompany() { return this.company; } public boolean isValid() { return this.validateCompany() && this.validateLength() && this.validateNumber(); } public boolean isDivisibleBy10() { return false; } public boolean validateCompany() { return this.ccNumber.startsWith("4") || this.ccNumber.startsWith("5") || this.ccNumber.startsWith("37") || this.ccNumber.startsWith("6"); } public boolean validateLength() { return this.ccNumber.length() >= 13 && this.ccNumber.length() <= 16; } public boolean validateNumber() { for (int i = 0; i < this.ccNumber.length(); i++) if (!Character.isDigit(this.ccNumber.charAt(i))) return false; return true; } public boolean validateSums() { return false; } private String identifyCompany(String number) { if (validateCompany()) switch (number.charAt(0)) { case '3': return "American Express"; case '4': return "Visa"; case '5': return "MasterCard"; case '6': return "Discover"; } return "Unknown"; } }