亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查方法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 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號