当前位置: 首页 > 知识库问答 >
问题:

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

彭展
2023-03-14

我目前正在尝试一个项目,包括创建银行账户系统。该系统允许您创建一个新的银行账户,您可以在其中说明该账户的归属、余额等。

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

对于撤回方法,我必须满足几个条件。这些是以下:

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

目前,我已经能够做到这一点,所以如果金额低于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;
    }
}

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

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

    < li >如果金额大于0.0,则允许用户取款 < li >允许用户透支(例如-100),前提是他们确实有透支。

透支可以通过以下代码进行检查:

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”显示该账户没有透支。我们将使用false和true对其进行测试。

共有1个答案

郑承恩
2023-03-14

软件中如此多的复杂性来自于试图让一件事做两件事。-Ryan Singer

您的方法主要做两件事:

  • 检查您是否可以从账户中提取资金(先决条件),这是允许透支的情况,否则余额不会变成负数。提取的金额也应该是正的,并且可能不是零(参见@forpas的评论)-这可以是先决条件的一部分,或者只是之前的参数验证步骤。
  • 在可以的时候实际取钱(行动)。

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

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

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

正如这个问题的评论者已经指出的那样,你在先决条件中犯了一个错误(撤回金额后检查金额而不是余额)。

 类似资料:
  • 我有两个矩阵,一个是矩阵(ncol=1,nrow=20,000),存储我要搜索的值,另一个矩阵是矩阵,存储一个大型数据集(ncol=1,nrow=5,000)。 矩阵:(,,....是行名) 矩阵:(,,,,...是行名) 我要为矩阵中的每个值查找矩阵的哪一行包含该字符串,并记录其矩阵的行名,并将其放在矩阵中该字符串行的下列列中(或在一列中,但用“,”分隔)。 例如,我希望有一个循环,首先从索引矩

  • 在我的普通React类组件中,在返回条件html呈现之前,我在render()方法中做了一些检查。现在,我正在使用一个react函数组件,它显然没有render()方法。。。我如何在这里进行条件检查?就在普通函数中,然后从这些函数返回html代码? e、 g类组件: 在功能组件中?:

  • 编写一个名为season的方法,该方法使用两个整数作为代表月份和日期的参数,并返回一个字符串,指示该月份和日期的季节。假设月份被指定为1到12之间的整数(1代表一月,2代表二月,依此类推),并且月份的日期是1到31之间的数字。 如果日期落在12/16和3/15之间,你应该返回“冬天”。如果日期落在3/16和6/15之间,则应返回“spring”。如果日期介于6/16和9/15之间,则应返回“sum

  • 我正在尝试根据枚举值检索一个值。基本上,假设我有以下枚举: 通过执行auth.key.get()将返回“MyKey”,而auth.mail.get()将返回“MyMail”。我搜索了一下,但没有找到答案,我之前没有尝试过任何事情,因为我完全不知道如何开始。谢谢,祝你有个愉快的一天

  • 我有一个在不同医院接受治疗的病人的数据集(仅限于住院病人),其中一些分析揭示了几个不一致之处。其中之一是--软件允许病人在不关闭他们之前开放的的情况下入院。 为了更好地理解它,让我们考虑一下示例数据集 如果我们在上面的数据中看到,id为1的患者于1月1日在hospital_1(row-1)入院,并于1月14日出院。出院前患者再次在同一医院入院(第2行);在1月15日(第2行)结束这四项记录之前,再

  • 问题内容: 在下面的代码中,我试图一次性进行多个(大约10个)HTTP请求和RSS解析。 我在需要访问和解析结果的URI数组上使用标准构造。 码: 我了解一次调用函数时,应该使用回调。但是,在此示例中,我唯一想到使用回调的方法是调用一个函数,该函数对被调用的次数进行计数,并且仅在被调用的次数与看起来很hacky 的次数相同时才继续。 所以我的问题是, 在node.js中处理这种情况的最佳方法 是