gpt4 book ai didi

Java CashRegister 类总销售额无法正确累加

转载 作者:行者123 更新时间:2023-12-01 10:20:53 24 4
gpt4 key购买 nike

我即将完成一个基本的收银机程序。几乎一切都正常,除了输出的最后部分,我必须显示每日总销售额。

收银机类

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());

}



}

当前输出是:

Customer 1:
Change is: 0.0
Expected is 0.0

Customer 2:
Change is: 10.0
Expected is 10.0

Customer 3:
Total Sales: 209.75
Payment Given: 220.0
Change is: 10.25
Expected is: 7.0

Daily Totals:
Total Sales: $ 139.75
Number of Sales: 3.0

除了每日总计下的总销售额(应为 269.75)外,一切都正确。我很困惑为什么这行不通。任何帮助都会很棒,谢谢。

最佳答案

每次调用 giveChange() 时,您都会将购买金额重置回 0。因此,您的 giveSalesCount 仅返回应税总额中的购买总额销售。

在计算找零时将付款金额存储在其他地方,或者找到其他方法进行计算而不删除您的购买。

关于Java CashRegister 类总销售额无法正确累加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35638137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com