Java 如何检查转账方式中的货币是否不同(用户与用户、用户与用户、整数金额)?
我需要检查用户之间的货币是否不同,如果不同,我需要返回null。Java 如何检查转账方式中的货币是否不同(用户与用户、用户与用户、整数金额)?,java,Java,我需要检查用户之间的货币是否不同,如果不同,我需要返回null。 我认为这是不正确的,请帮助我找出要知道是否已完成转移,我建议返回一个布尔值,然后检查货币并返回false,如果不同。也可以用你写的方法转帐 @Override public void withdraw(User user, int amount) { if (!checkWithdraw(user,amount)) return; user.setBalance(user.getBalance()
我认为这是不正确的,请帮助我找出要知道是否已完成转移,我建议返回一个布尔值,然后检查货币并返回
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
- 如果它不起作用(
not ok),它将返回checkdraw
,逻辑表达式的第二部分将不会执行,并且您将不会false
另一个帐户fund
- 如果它工作,它将返回
- 如果
返回draw
它将调用true
方法,全局将返回fund
return true:fund
so returntrue&&true
true
return false:fund
so returntrue&false
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);
}