为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查方法transferMoney(User fromUser, User toUser

如何检查方法transferMoney(User fromUser, User toUser

慕慕森 2024-01-17 21:09:27
@Overridepublic void withdraw(User user, int amount) {    if (!checkWithdraw(user,amount))        return;    user.setBalance(user.getBalance() - amount - amount*user.getBank().getCommission(amount));}@Overridepublic void fund(User user, int amount) {    if (!checkFund(user, amount))        return;    user.setBalance(user.getBalance() + amount);}@Overridepublic void transferMoney(User fromUser, User toUser, int amount) {    if (!checkWithdraw(fromUser,amount))        return;    if (!checkFund(toUser, amount))        return;    fromUser.setBalance(fromUser.getBalance()-amount-amount*fromUser.getBank().getCommission(amount));    toUser.setBalance(toUser.getBalance()+amount);    **if (fromUser.getBank().getCurrency()==toUser.getBank().getCurrency()) return;**}我需要检查用户之间的货币是否不同,如果是,我需要返回 null。我觉得不对,帮我看看
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

要知道转账是否已完成,我建议返回一个布尔值,然后检查货币并false如果不同则返回。还可以使用您编写的方法来转账,这也是一个好主意


@Override

public boolean transferMoney(User fromUser, User toUser, int amount) {

    if (!checkWithdraw(fromUser, amount)) return false;

    if (!checkFund(toUser, amount)) return false;

    if (fromUser.getBank().getCurrency() != toUser.getBank().getCurrency()) return false;


    withdraw(fromUser, amount);

    fund(toUser, amount);

    return true;

}

但是,随着方法withdraw和fund检查的进行,会调用冗余代码,您可以这样做:


@Override

public boolean withdraw(User user, int amount) {

    if (!checkWithdraw(user, amount)) return false;

    user.setBalance(user.getBalance() - amount - amount * user.getBank().getCommission(amount));

    return true;

}


@Override

public boolean fund(User user, int amount) {

    if (!checkFund(user, amount)) return false;

    user.setBalance(user.getBalance() + amount);

    return true;

}


@Override

public boolean transferMoney(User fromUser, User toUser, int amount) {

    if (fromUser.getBank().getCurrency() != toUser.getBank().getCurrency()) return false;

    return withdraw(fromUser, amount) && fund(toUser, amount);

}

解释:

  • 你会打电话给withdraw

    • 如果有效,它将返回true,并且逻辑表达式的第二部分将被测试并执行

    • 如果它不起作用(checkWithdraw不好),它将返回false,并且逻辑表达式的第二部分将不会被执行,并且您将不会执行fund其他帐户

  • 如果withdraw返回,true它将调用该fund方法,并且全局将返回

    • fund返回 true :true && true所以返回true

    • fund返回 false:true && false所以返回false


查看完整回答
反对 回复 2024-01-17
  • 1 回答
  • 0 关注
  • 47 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信