@@ -23,45 +23,54 @@ public String statement() {
2323 // loop over each movie rental
2424 double totalDue = 0 ;
2525 for (Rental rental : rentals ) {
26- double balanceDue = 0 ;
27- // determine amounts for every line
28- int daysRented = rental .rentalDays ();
29-
30- Movie movie = rental .movie ();
31- switch ( movie .getCategory ()) {
32- case REGULAR :
33- balanceDue += 2 ;
34- if ( daysRented > 2 )
35- balanceDue += ( daysRented - 2 ) * 1.5 ;
36- break ;
37- case NEW_RELEASE :
38- balanceDue += daysRented * 3 ;
39- break ;
40- case CHILDREN :
41- balanceDue += 1.5 ;
42- if ( daysRented > 3 )
43- balanceDue += ( daysRented - 3 ) * 1.5 ;
44- break ;
45- }
4626
27+ double balanceDue = getBalanceDue (rental );
4728 // show figures line for this rental
48- result += "\t " + movie .getTitle () + "\t " + balanceDue + "\n " ;
29+ result += "\t " + rental . movie () .getTitle () + "\t " + balanceDue + "\n " ;
4930 totalDue += balanceDue ;
5031 }
5132
33+ int frequentRenterPoints = getFrequentRenterPoints ( rentals );
34+ // add footer lines
35+ result += "Amount owed is " + totalDue + "\n " ;
36+ result += "You earned " + frequentRenterPoints + " frequent renter points" ;
37+ return result ;
38+ }
39+
40+ private double getBalanceDue ( Rental rental )
41+ {
42+ double balanceDue = 0 ;
43+ int daysRented = rental .rentalDays ();
44+ Movie movie = rental .movie ();
45+ switch ( movie .getCategory ()) {
46+ case REGULAR :
47+ balanceDue += 2 ;
48+ if ( daysRented > 2 )
49+ balanceDue += ( daysRented - 2 ) * 1.5 ;
50+ return balanceDue ;
51+ case NEW_RELEASE :
52+ balanceDue += daysRented * 3 ;
53+ return balanceDue ;
54+ case CHILDREN :
55+ balanceDue += 1.5 ;
56+ if ( daysRented > 3 )
57+ balanceDue += ( daysRented - 3 ) * 1.5 ;
58+ return balanceDue ;
59+ }
60+ return balanceDue ;
61+ }
62+
63+ private int getFrequentRenterPoints ( List <Rental > rentals )
64+ {
5265 int frequentRenterPoints = 0 ;
5366 for (Rental rental : rentals ) {
5467 Movie movie = rental .movie ();
55- int daysRented = rental .rentalDays ();
5668 // add frequent renter points
5769 frequentRenterPoints ++;
5870 // add bonus for a two day new release rental
59- if ( movie .getCategory () == Category .NEW_RELEASE && daysRented > 1 )
71+ if ( movie .getCategory () == Category .NEW_RELEASE && rental . rentalDays () > 1 )
6072 frequentRenterPoints ++;
6173 }
62- // add footer lines
63- result += "Amount owed is " + totalDue + "\n " ;
64- result += "You earned " + frequentRenterPoints + " frequent renter points" ;
65- return result ;
74+ return frequentRenterPoints ;
6675 }
6776}
0 commit comments