Collections and Generics
Invoice app
InvoiceApp class
The code for the InvoiceApp class
import java.util.Scanner; public class InvoiceApp { public static Invoice invoice = new Invoice(); public static void main(String args[]) { System.out.println("Welcome to the invoice application.\n"); getLineItems(); displayInvoice(); } public static void getLineItems() { Scanner sc = new Scanner(System.in); String choice = "y"; while (choice.equalsIgnoreCase("y")) { // get the input from the user String productCode = Validator.getString(sc, "Enter product code: "); int quantity = Validator.getInt(sc, "Enter quantity: ", 0, 1000); Product product = ProductDB.getProduct(productCode); invoice.addItem(new LineItem(product, quantity)); // see if the user wants to continue choice = Validator.getString(sc, "Another line item? (y/n): "); System.out.println(); } } public static void displayInvoice() { System.out.println( "Code\tDescription\t\t\tPrice\tQty\tTotal"); System.out.println( "----\t-----------\t\t\t-----\t---\t-----"); for (LineItem lineItem : invoice.getLineItems()) { Product product = lineItem.getProduct(); String s = product.getCode() + "\t" + product.getDescription() + "\t" + product.getFormattedPrice() + "\t" + lineItem.getQuantity() + "\t" + lineItem.getFormattedTotal(); System.out.println(s); } System.out.println("\n\t\t\t\t\tInvoice total:\t" + invoice.getFormattedTotal() + "\n"); } }