Many Thanks
Supermarkets sometimes have discounts on multiple purchases. For example, the unitprice for “mango” is $1.89, but buying two of the product will cost $2.50. The discount information is stored with each item in the items array.
For those items that offer a discount for multiple purchases, the discounted price is shown when it applies.
An example is shown below:
Type item code (press enter to finish):1002
mango/$1.89
Type item code (press enter to finish):1002
mango/$1.89
Type item code (press enter to finish):1002
mango/$1.89
Type item code (press enter to finish):1002
mango/$1.89
Type item code (press enter to finish):
==========Bill==========
mango/$1.89
mango/discounted (2@2.5) $0.61
mango/$1.89
mango/discounted (2@2.5) $0.61
Amount due: $5
Thanks for shopping with us!
--------------------------------------------------------------------------------
For the code i write so far the Bill i only can print the bill like this
Type item code (press enter to finish):1002
mango/$1.89
Type item code (press enter to finish):1002
mango/$1.89
Type item code (press enter to finish):1002
mango/$1.89
Type item code (press enter to finish):1002
mango/$1.89
Type item code (press enter to finish):
==========Bill==========
mango/$1.89
mango/$1.89
mango/$1.89
mango/$1.89
Amount due: $5
Thanks for shopping with us!
Please Help me. And please give me more detail, cause this is my first year to learn java, i want to learn more and make me more understand~ A lot of thanks
Expand|Select|Wrap|Line Numbers
- .CheckoutProgram.java.
- import java.io.*;
- import java.text.DecimalFormat;
- public class CheckoutProgram {
- public void start() {
- SalesItem[] items = getStock();
- System.out.print("Type item code (press enter to finish):");
- String wordIn = Keyboard.readInput();
- SalesItem[] goods = new SalesItem[1000];
- int count = 0;
- while (wordIn.length()>=4 && wordIn.length()<=4){
- for (int i=0;i<items.length;i++) {
- if (items[i] != null && wordIn.equals(items[i].getItemCode())){
- System.out.println(items[i]);
- goods[count] = items[i];
- }
- }
- System.out.print("Type item code (press enter to finish):");
- wordIn = Keyboard.readInput();
- count++;
- }
- System.out.println();
- System.out.println("==========Bill==========");
- double amountDue = 0.0;
- for (int i=0; i<count; i++){
- System.out.println(goods[i]);
- amountDue = amountDue + goods[i].getUnitPrice();
- }
- System.out.println();
- System.out.println("Amount due: $" + new DecimalFormat().format(amountDue));
- System.out.println("Thanks for shopping with us!");
- }
- // method to read in "stock.txt" and store the items for sale in an array of type SalesItem
- private SalesItem[] getStock(){
- SalesItem[] items = new SalesItem[1000];
- try {
- BufferedReader br = new BufferedReader(new FileReader("stock.txt"));
- String theLine;
- int count = 0;
- while ((theLine = br.readLine()) != null) {
- String[] parts = theLine.split(",");
- items[count] = new SalesItem(parts[0],parts[1],Double.parseDouble(parts[2]));
- if (parts.length==4){
- String discount = parts[3];
- String numPurchases = discount.substring(0, discount.indexOf("@"));
- String price = discount.substring(discount.indexOf("@")+1);
- items[count].setNumPurchases(Integer.parseInt(numPurchases));
- items[count].setDiscountedPrice(Double.parseDouble(price));
- }
- count++;
- }
- }
- catch (IOException e) {
- System.err.println("Error: " + e);
- }
- return items;
- }
- }
- ..
Expand|Select|Wrap|Line Numbers
- ..SalesItem.java
- import java.text.DecimalFormat;
- public class SalesItem {
- private String itemCode; //the item code
- private String description; // the item description
- private double unitPrice; // the item unit price
- // An item may offer a discount for multiple purchases
- private int numPurchases; //the number of purchases required for receiving the discount
- private double discountedPrice; // the discounted price of multiple purchases
- // the constructor of the SalesItem class
- public SalesItem (String itemCode, String description, double unitPrice){
- this.itemCode = itemCode;
- this.description = description;
- this.unitPrice = unitPrice;
- }
- // accessor and mutator methods
- public String getItemCode(){
- return itemCode;
- }
- public void setItemCode(String itemCode){
- this.itemCode = itemCode;
- }
- public String getDescription(){
- return description;
- }
- public void setDescription(String description){
- this.description = description;
- }
- public double getUnitPrice(){
- return unitPrice;
- }
- public void setUnitPrice(double unitPrice){
- this.unitPrice = unitPrice;
- }
- public int getNumPurchases(){
- return numPurchases;
- }
- public void setNumPurchases(int numPurchases){
- this.numPurchases = numPurchases;
- }
- public double getDiscountedPrice(){
- return discountedPrice;
- }
- public void setDiscountedPrice(double discountedPrice){
- this.discountedPrice = discountedPrice;
- }
- // the string representation of a SalesItem object
- public String toString(){
- return description + "/$" + new DecimalFormat().format(unitPrice);
- }
- }
- ..
Expand|Select|Wrap|Line Numbers
- ..stock.txt
- 1000,low-fat milk (1 litre),2.15
- 1001,good-morning cereal,5.60
- 1002,mango,1.89,2@2.50
- 1003,Coca-Cola (300 ml),2.5
- ..