Java 如何检查转账方式中的货币是否不同(用户与用户、用户与用户、整数金额)?

Java 如何检查转账方式中的货币是否不同(用户与用户、用户与用户、整数金额)?,java,Java,我需要检查用户之间的货币是否不同,如果不同,我需要返回null。 我认为这是不正确的,请帮助我找出要知道是否已完成转移,我建议返回一个布尔值,然后检查货币并返回false,如果不同。也可以用你写的方法转帐 @Override public void withdraw(User user, int amount) { if (!checkWithdraw(user,amount)) return; user.setBalance(user.getBalance()

我需要检查用户之间的货币是否不同,如果不同,我需要返回null。
我认为这是不正确的,请帮助我找出要知道是否已完成转移,我建议返回一个布尔值,然后检查货币并返回
false
,如果不同。也可以用你写的方法转帐

@Override
public void withdraw(User user, int amount) {

    if (!checkWithdraw(user,amount))
        return;
    user.setBalance(user.getBalance() - amount - amount*user.getBank().getCommission(amount));
}

@Override
public void fund(User user, int amount) {
    if (!checkFund(user, amount))
        return;
    user.setBalance(user.getBalance() + amount);
}

@Override
public 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;**
}
但是,由于
draw
fund
方法也进行检查,因此调用了冗余代码,您可以执行以下操作:

@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;
}
说明:

  • 您将要调用
    draw

    • 如果它工作,它将返回
      true
      ,逻辑表达式的第二部分将被测试并执行
    • 如果它不起作用(
      checkdraw
      not ok),它将返回
      false
      ,逻辑表达式的第二部分将不会执行,并且您将不会
      fund
      另一个帐户
  • 如果
    draw
    返回
    true
    它将调用
    fund
    方法,全局将返回

    • fund
      return true:
      true&&true
      so return
      true
    • fund
      return false:
      true&false
      so return
      false
@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);
}