1+ import java .util .*;
2+
3+ interface ShoppingCart {
4+ void addItem (String itemType , int number );
5+
6+ void printReceipt ();
7+ }
8+
9+ class TT7 implements ShoppingCart {
10+
11+ private class Item {
12+ private String name ;
13+ private double price ;
14+
15+ public Item (String n , double p ) {
16+ name = n ;
17+ price = p ;
18+ }
19+ }
20+
21+ private class LineItem {
22+ private Item item ;
23+ private int quantity ;
24+
25+ public LineItem (Item i , int q ) {
26+ item = i ;
27+ quantity = q ;
28+ }
29+
30+ public double getPrice () {
31+ return item .price ;
32+ }
33+
34+ public int getQuantity () {
35+ return quantity ;
36+ }
37+
38+ public String toString () {
39+ return String .format ("%-20s$%-19.2f%-20s$%.2f" , item .name , item .price , quantity , item .price * quantity );
40+ }
41+ }
42+
43+ private List <LineItem > lineItems ;
44+ private Map <String , Double > itemPrices ;
45+ private double grandTotal ;
46+
47+ public TT7 () {
48+ grandTotal = 0.0 ;
49+ lineItems = new ArrayList <>();
50+ itemPrices = new HashMap <>();
51+
52+ itemPrices .put ("Apple" , 0.30 );
53+ itemPrices .put ("Pear" , 1.20 );
54+ }
55+
56+ public void addItem (String itemType , int number ) {
57+ double itemPrice = itemPrices .getOrDefault (itemType , 0.0 );
58+ lineItems .add (new LineItem (new Item (itemType , itemPrice ), number ));
59+ }
60+
61+ public void printReceipt () {
62+ printReceiptHeader ();
63+
64+ for (LineItem li : lineItems ) {
65+ System .out .println (li );
66+ grandTotal += (li .getPrice () * li .getQuantity ());
67+ }
68+
69+ printGrandTotal (grandTotal );
70+ }
71+
72+ private void printReceiptHeader () {
73+ System .out .printf ("%-20s%-20s%-20s%-20s\n " , "Item" , "Unit price" , "Quantity" , "Total" );
74+ }
75+
76+ private void printGrandTotal (double grandTotal ) {
77+ System .out .printf ("\n %-60s$%-20.2f\n " , "Total:" , grandTotal );
78+ }
79+
80+ public static void main (String [] args ) {
81+ TT7 tt7 = new TT7 ();
82+
83+ tt7 .addItem ("Pear" , 2 );
84+ tt7 .addItem ("Apple" , 3 );
85+
86+ tt7 .printReceipt ();
87+ return ;
88+ }
89+ }
0 commit comments