public class Customer { public static int MaximumRentals = 10; private String name; private Rental[] rentals; private int numberRented; public Customer( String name ) { this.name = name; this.rentals = new Rental[MaximumRentals]; numberRented = 0; } public void addRental( Rental r ) { if ( numberRented >= MaximumRentals ) return; rentals[numberRented] = r; numberRented++; } public String name() { return name; } public String statement() { double totalAmount = 0.0; int frequentRenterPoints = 0; String result = "Rental Record for " + name() + "\n"; for (int i=0; i < numberRented; i++) { Rental entry = rentals[i]; double amount = 0.0; // determine amount, for each kind of movie switch ( entry.movie().priceCode() ) { case Movie.REGULAR: amount = amount + 2; if ( entry.daysRented() > 2 ) amount = amount + (entry.daysRented() - 2) * 1.5; break; case Movie.NEW_RELEASE: amount = amount + entry.daysRented() * 3; break; case Movie.CHILDRENS: amount = amount + 1.5; if ( entry.daysRented() > 3 ) amount = amount + (entry.daysRented() - 3) * 1.5; break; } totalAmount = totalAmount + amount; // add frequent renter points frequentRenterPoints = frequentRenterPoints + 1; // with a bonus for a two-day new release rental if ( entry.movie().priceCode() == Movie.NEW_RELEASE && entry.daysRented() > 1 ) frequentRenterPoints = frequentRenterPoints + 1; // show figures for this rental result = result + "\t" + entry.movie().title() + "\t" + amount + "\n"; } // add footer lines result = result + "Amount owed is " + totalAmount + "\n" + "You earned " + frequentRenterPoints + " frequent renter points"; return result; } }