У меня есть код для изучения класса, и я понимаю его большую часть, но я смущен этим методом. При заданном коде не будет ли изменение возврата всегда равняться 0, поскольку последнее, что было введено, состояло в том, что totalOfItems и totalGiven равны 0.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;
Правильно, но поскольку мы меняем totalGiven и totalOfItems на 0, прежде чем просить компилятор возвращать изменения, не вернет ли он 0? – user2769212
@ user2769212 'change' не является функцией двух переменных, это константа, которая рассчитывается из значения переменных при ее вычислении. –
Хорошо, мне кажется, я понял это сейчас. изменение теперь это собственная переменная, которая равна оригиналу this.totalGiven - this.totalOfItems; Таким образом, это нормально перезагрузить this.totalGiven и this.totalOfItems без изменения. Правильно? – user2769212