You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Customer.java 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import java.util.ArrayList;
  2. public class Customer {
  3. private final String name;
  4. private final ArrayList<Rental> rentals = new ArrayList<>();
  5. public Customer( String name ) {
  6. this.name = name;
  7. }
  8. public void addRental( Rental arg ) {
  9. rentals.add( arg );
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public String statement() {
  15. double totalAmount = 0;
  16. int frequentRenterPoints = 0;
  17. String result = "Rental Record for " + getName() + "\n";
  18. for( Rental curRental : rentals ) {
  19. double thisAmount = 0;
  20. // determine amounts for each line
  21. switch( curRental.getMovie().getPriceCode() ) {
  22. case Movie.REGULAR:
  23. thisAmount += 2;
  24. if( curRental.getDaysRented() > 2 )
  25. thisAmount += ( curRental.getDaysRented() - 2 ) * 1.5;
  26. break;
  27. case Movie.NEW_RELEASE:
  28. thisAmount += curRental.getDaysRented() * 3;
  29. break;
  30. case Movie.CHILDRENS:
  31. thisAmount += 1.5;
  32. if( curRental.getDaysRented() > 3 )
  33. thisAmount += ( curRental.getDaysRented() - 3 ) * 1.5;
  34. break;
  35. }
  36. totalAmount += thisAmount;
  37. // add frequent renter points
  38. frequentRenterPoints++;
  39. // add bonus for a two day new release rental
  40. if( ( curRental.getMovie().getPriceCode() == Movie.NEW_RELEASE ) && curRental.getDaysRented() > 1 )
  41. frequentRenterPoints++;
  42. // show figures for this rental
  43. result += "\t" + curRental.getMovie().getTitle() + "\t days rented: " + curRental.getDaysRented() + " = " + String.valueOf( thisAmount ) + "\n";
  44. }
  45. // add footer lines
  46. result += "Amount owed is " + String.valueOf( totalAmount ) + "\n";
  47. result += "You earned " + String.valueOf( frequentRenterPoints ) + " frequent renter points";
  48. return result;
  49. }
  50. }