我正在努力做到这一点,以便我的方法 payGourmet 和 payEconomical 余额在没有足够的钱的情况下不会改变,并且不会降至零以下。另外,我的 loadMoney 方法不会超过 150,但仍会添加 main 中指定的数字。我究竟做错了什么?
Import java.util.Scanner;
public class LyyraCard {
private double balance;
public LyyraCard(double balanceAtStart) {
this.balance = balanceAtStart;
}
public String toString() {
return "The card has " + this.balance + " euros";
}
public void payEconomical() {
if (this.balance > 0) {
this.balance -= 2.5;
}
}
public void payGourmet() {
if (this.balance > 0) {
this.balance -= 4.0;
}
}
public void loadMoney(double amount) {
if (this.balance < 150) {
this.balance += amount;
}
}
}
public class Main {
public static void main(String[] args) {
// add here code that tests LyraCard. However before doing 77.6 remove the
// other code
LyyraCard card = new LyyraCard(10);
System.out.println(card);
card.payEconomical();
System.out.println(card);
card.payGourmet();
System.out.println(card);
card.payGourmet();
System.out.println(card);
card.loadMoney(10);
System.out.println(card);
card.loadMoney(200);
System.out.println(card);
}
}
最佳答案
当您检查余额是否大于 0,然后减去一个金额时,可能会出现负余额:
public void payEconomical() {
if (this.balance > 0) {
this.balance -= 2.5;
}
}
如果balance = 1
,这将产生负余额 (-1.5)。
您需要检查余额是否等于或大于您要减去的金额
public void payEconomical() {
if (this.balance >= 2.5) {
this.balance -= 2.5;
}
else {
// There isn't enough money
}
}
同样对于payGourmet
:
if (this.balance >= 4.0) {
...
在loadMoney
中,您需要检查当前余额加上添加的金额是否等于或小于150:
if (this.balance + amount <= 150.0) {
this.balance += amount;
}
else {
// Amount too large.
}
关于java - 防止添加的变量超过指定数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27451435/