我正在做一个学校项目,在该项目中我模拟了一个简单的银行系统,用户可以在该系统中创建帐户并进行存款、转账和删除帐户。
方法交易应该通过arraylist,找到第一个账户和第二个账户并转账,但是它跳代码说找不到账户。如何解决这个问题
下面的代码显示了方法中发生的事情
public boolean transaction(String accountNumber, String newAccountNumber, double amount){
for(int i = 0; i < bList.size(); i++){
if(bList.get(i).getAccountNumber().equals(accountNumber)&& bList.get(i).getAccountNumber().equals(newAccountNumber)){
bList.get(i).deposit(-amount);
deposit(newAccountNumber, amount);
return true;
}
else if(bList.get(i).getBalance()< amount){
JOptionPane.showMessageDialog(null, "Du har inte tillräckligt med pengar");
return false;
}
else if(!bList.get(i).getAccountNumber().equals(newAccountNumber) && bList.get(i).getAccountNumber().equals(accountNumber)){
JOptionPane.showMessageDialog(null, "Kontot finns inte ");
return false;
}
else if(!bList.get(i).getAccountNumber().equals(newAccountNumber)){
JOptionPane.showMessageDialog(null, "kontot finns inte");
return false;
}
else if(!bList.get(i).getAccountNumber().equals(accountNumber)){
JOptionPane.showMessageDialog(null, "Kontot finns inte");
return false;
}
}
return false;
}
第一个 if 语句应该检查两个账户是否存在,并将钱从有钱的账户转移到用户选择的账户,但它跳过 if 语句并说没有账户。
最佳答案
if(bList.get(i).getAccountNumber().equals(accountNumber)&& bList.get(i).getAccountNumber().equals(newAccountNumber))
您正在检查同一个帐户是否有两个不同的帐号 - accountNumber
和 newAccountNumber
。这永远不可能是真的。
您必须找到两个帐户,一个具有第一个帐号,另一个具有第二个帐号。
最简单的方法是使用嵌套的 for 循环:
for(int i = 0; i < bList.size(); i++){
for(int j = 0; j < bList.size(); j++){
if(bList.get(i).getAccountNumber().equals(accountNumber) && bList.get(j).getAccountNumber().equals(newAccountNumber)) {
....
}
}
}
但这需要 O(n^2)
时间。将帐户存储在 HashMap
中会更有效,其中帐户 ID 是键,帐户是值。
关于java - 对象数组列表中的 If 语句和循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44352734/