gpt4 book ai didi

java - 如何检查方法中的多个条件并根据其返回值执行某些操作

转载 作者:行者123 更新时间:2023-12-02 10:28:42 25 4
gpt4 key购买 nike

我目前正在尝试开展一个项目,其中包括创建 BankAccount 系统。该系统允许您创建一个新的银行帐户,并在其中说明该帐户的所有者、余额等。

其中一种方法是能够从帐户中提取资金。除此之外,您还可以检查帐户是否 overdraw 。

对于withdraw方法,我必须满足几个条件。具体如下:

  • 该值必须高于 0.0,这意味着低于 0 的提款不会发生
  • 余额不得低于 0.0,除非帐户 overdraw 。

目前,我已经能够做到这一点,因此如果金额低于 0.0,该方法将返回 false。如下所示:

public boolean withdraw (double amount) {
if (hasOverdraft) {
this.balance -= amount;
return true;
} else if (amount > 0.0) {
this.balance -= amount;
return true;
} else {
return false;
}
}

但是,我尝试了几种不同的方法来使其与 overdraw 一起使用,但似乎无法做到。

请记住,最后,该方法需要能够:

  • 允许用户提款,前提是金额高于 0.0
  • 允许用户进行 overdraw (例如 -100),前提是他们确实有 overdraw 。

可以使用以下代码检查 overdraw 情况:

if (hasOverdraft)

为了检查代码是否正常工作,我们使用以下代码:

public static void main (String[] args) {
BankAccount lewis = new BankAccount("1234", "Lewis", false);
System.out.println(lewis);

lewis.setBalance(200);
System.out.println(lewis);
lewis.withdraw(250);
System.out.println(lewis);
}

BankAccount 的“false”表明该帐户没有 overdraw 。我们将用 false 和 true 来测试它。

最佳答案

So much complexity in software comes from trying to make one thing do two things. -Ryan Singer

你的方法基本上做了两件事:

  • 检查账户是否可以提款(前提),允许 overdraw ,否则余额不会变成负值。提款金额也应该是正数,并且可能不为零(请参阅@forpas 的评论) - 这可以是前提条件的一部分,或者只是之前的参数验证步骤。
  • 实际上,在可以的情况下提取资金(行动)。

将这两个问题分开可以使代码更加简洁,避免重复实际操作,并允许将这两件事提取到单独的可重用方法中(如果稍后需要):

public boolean withdraw (double amount) {
boolean canWithdraw = amount> 0 && (hasOverdraft || balance >= amount);

if (canWithdraw ) {
balance -= amount;
}
return canWithdraw;
}

正如该问题的评论者已经指出的那样,您的前提条件有误(提款后检查的是金额而不是余额)。

关于java - 如何检查方法中的多个条件并根据其返回值执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53730653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com