Java CashRegister类总销售额不会正确累加

时间:2016-02-25 20:54:51

标签: java

我刚刚完成基本的收银机计划。几乎所有东西都在工作,除了输出的最后,我必须显示每日总销售额。

收银机类

cv:cuda::GpuMat

收银机测试员班

public class CashRegister
{
   private double purchase;
   private double payment;
   private double totalTax;
   private double taxRate;
   private double tax;
   private double salesTotal;
   private double salesCount;
   private double amount;
   private double rate;
   private double taxPurchase;
   private double taxable;
   /**
   Constructs a cash register with no money in it.
   */
   public CashRegister(double rate)
   {
      purchase = 0;
      payment = 0;
     taxRate = rate;
   }
   /**
   Records the sale of an item.
   @param amount the price of the item
   */
   public void recordPurchase(double amount)
   {
      purchase = purchase + amount;
     salesTotal = amount + salesTotal;
   }
   /**
   Records the sale of a taxable item and compute the total tax.
   @param amount the price of the item
   */
   public void recordTaxablePurchase(double amount)
   {
     //taxPurchase = taxPurchase + amount;
      totalTax = totalTax +  amount + (amount* (taxRate / 100));
    }

   /**
   Enters the payment received from the customer.
   @param amount the amount of the payment
   */
   public void enterPayment(double amount)
   {
      payment = amount;

   }
   /**
   Returns the total tax due
   @return the totalTax 
   */
   public double getTotalTax()
   {

      return totalTax;
   }
   /**
   Computes the change due and resets the machine for the next customer.
   @return the change due to the customer
   */
   public double giveChange()
   {
      double change = payment - purchase - totalTax;
     salesTotal += purchase;
      purchase = 0;
      payment = 0;
     //totalTax = 0;
     salesCount++;
     salesTotal++;
      return change;
    }

   public double getSalesTotal(){
      return purchase + totalTax;

   }

   public double getSalesCount(){
      return salesCount;
   }

   public void reset(){
      amount = 0;
      purchase = 0;
      totalTax = 0;
      salesTotal = 0;
      salesCount = 0;
   }
   public double showPayment(){
      return payment;
   }

   public double getTotalPurchase(){
      return payment + totalTax;
   }
}

目前的输出是:

public class CashRegisterTester{
   public static void main(String [] args){

   CashRegister cash1 = new CashRegister(7.5);
      System.out.println("Customer 1:");
      cash1.recordPurchase(20.00);
      cash1.enterPayment(20.00);
      System.out.println(" Change is: " + cash1.giveChange());
      System.out.println(" Expected is 0.0");

      System.out.println();
      System.out.println("Customer 2:");
      cash1.recordPurchase(30.00);
      cash1.recordPurchase(10.00);
      cash1.enterPayment(50.00);
      System.out.println(" Change is: " + cash1.giveChange());
      System.out.println(" Expected is 10.0"); 

      //cash1.reset();
      System.out.println();
      System.out.println("Customer 3:");
      cash1.recordTaxablePurchase(80.00);
      cash1.recordPurchase(70.00);
      cash1.recordTaxablePurchase(50.00);
      cash1.enterPayment(220.00);     
      System.out.println(" Total Sales: " + cash1.getSalesTotal());
      System.out.println(" Payment Given: " + cash1.showPayment());
      System.out.println(" Change is: " + cash1.giveChange());
      System.out.println(" Expected is: 7.0");

      System.out.println();
      System.out.println(" Daily Totals: ");
      System.out.println(" Total Sales:   " + "$ " + cash1.getSalesTotal());
      System.out.println(" Number of Sales:  " + cash1.getSalesCount());

   }



}

一切都是正确的,除了Daily Totals下的总销售额,应该是269.75。我很困惑为什么这不起作用。任何帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:1)

每次拨打giveChange()时,您都会将购买金额重置为0.因此,giveSalesCount仅返回从您的应税销售额中扣除的总购买量。

在计算更改时将付款金额存储在其他位置,或者在不删除购买的情况下找到另一种方式进行计算。

相关问题