Печать только неотрицательного баланса в Java - PullRequest
0 голосов
/ 01 апреля 2020

Я сейчас решаю упражнение PaymentCard в https://java-programming.mooc.fi/part-4/1-introduction-to-object-oriented-programming, и результат этой программы не должен быть отрицательным сальдо. Если баланс станет отрицательным, он не будет напечатан. Я добавил условный оператор в оба метода, но мой вывод продолжает выводить отрицательный баланс.

Любая помощь будет искренне признательна. Спасибо!

//Desired Output:The card has a balance 5.0 euros
//              The card has a balance 0.40000000000000036 euros
//              The card has a balance 0.40000000000000036 euros
//My Output: The card has a balance of 5.0 euros
//           The card has a balance of 0.40000000000000036 euros
//           The card has a balance of -4.199999999999999 euros
public class MainProgram {

    public static void main(String[] args) { 
        PaymentCard card = new PaymentCard(5);
        System.out.println(card);

        card.eatHeartily();
        System.out.println(card);

        card.eatHeartily();
        System.out.println(card);

    }
}

public class PaymentCard {

    private double balance;
    public PaymentCard(double openingBalance) {
        this.balance = openingBalance;
    }

    public String toString() {
        return "The card has a balance of " + this.balance + " euros";
    }

    public void eatAffordably() {
        if (this.balance > 0) {
            this.balance = this.balance - 2.60;
        }   
    }

    public void eatHeartily() {
        if (this.balance > 0) {
            this.balance = this.balance - 4.60;
        }    
    }
}

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Очевидно, что вы можете печатать только сумму больше нуля, но я думаю, что более правильное и элегантное решение - принять во внимание и сумму, которую вы вычитаете:

public void eatAffordably() {

    if (this.balance >= 2.60) {

        this.balance = this.balance - 2.60;
    } 

}

public void eatHeartily() {

    if (this.balance >= 4.60) {

        this.balance = this.balance - 4.60;
    } 

}
0 голосов
/ 01 апреля 2020

Вместо использования метода toString

public String toString() {

    return "The card has a balance of " + this.balance + " euros";

}

и вызова System.out.println(card);

создайте метод, который будет выполнять фактическую печать, например

void printCard () {
    if (this.balance > 0) {
        System.out.println(card);
    }
}
...