方法(正确)将变量声明为0但我不明白为什么?

时间:2013-10-04 18:05:09

标签: java methods zero

我有一些代码可以查看一个类,我理解其中的大部分内容,但对此方法感到困惑。使用给定的代码,返回更改总是不会导致0,因为最后输入的内容是totalOfItems和totalGiven都是0.0。有人告诉我,在运行它时不会发生,但我想了解原因。任何人都可以帮助我吗?

 public SelfCheckout () {
 this.totalOfItems = 0.0;
 this.totalGiven = 0.0;
 }

 /**
  * This method will scan the item.
 * @param amount The amount the items cost.
 */

public void scanItem (double amount){
this.totalOfItems = this.totalOfItems + amount;
}

/** The method will add the items scanned and return the total due.
 * 
 * @return getTotalDue The getTotalDue is the total amount of items scanned.
 */
public double getTotalDue(){
    return this.totalOfItems;
}

/** The method will show the amount that is received from the consumer.
 * 
 */
public void receivePayment(double amount){
    this.totalGiven = this.totalGiven + amount;
}

/**The method will calculate the amount of change due.
 * 
 */
public double produceChange(){
    double change = this.totalGiven - this.totalOfItems;
    this.totalGiven = 0.0;
    this.totalOfItems = 0.0;
    return change;

3 个答案:

答案 0 :(得分:3)

语句按顺序执行。 totalGiventotalOfItems的更改在计算后不会更改change

答案 1 :(得分:0)

为此:

double change = this.totalGiven - this.totalOfItems;
this.totalGiven = 0.0;
this.totalOfItems = 0.0;
return change;

首先你将一个(非零)值分配给change然后重置原始变量,然后才返回值{{ 1}}。变量值将复制到另一个变量,然后重置。

答案 2 :(得分:0)

我认为假设在某些时候已经调用了receivePayment和scanItem,因此他们将字段变量重新分配给非零的数字。然后给出改变。在您已经计算了更改以重置下一个事务的变量后,事务将关闭。