java - 防止添加的变量超过指定数量

标签 java increment

我正在努力做到这一点,以便我的方法 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/

相关文章:

java - 在 Java 中使用 Jackson 从 ObjectNode 创建字符串的速度很慢

Java逻辑代码-从字符串中删除一些文本

java - 使用 JAVA 在 JMS 队列中发布消息

java - 如何判断队列大小是否大于最大整数?

C 程序使用 for 循环递增变量

java - Api 注释的描述已弃用

java -++Var和Var++的区别

matlab - 将 Matlab 中的值增加到第二个值(1 :n logic)

javascript - 更新持续时间内的增量值

c++ - 在 for 循环中,就迭代总数而言,循环控制变量的前/后递增之间是否存在差异?