java - 对象数组列表中的 If 语句和循环

标签 java arraylist

我正在做一个学校项目,在该项目中我模拟了一个简单的银行系统,用户可以在该系统中创建帐户并进行存款、转账和删除帐户。

方法交易应该通过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))

您正在检查同一个帐户是否有两个不同的帐号 - accountNumbernewAccountNumber。这永远不可能是真的。

您必须找到两个帐户,一个具有第一个帐号,另一个具有第二个帐号。

最简单的方法是使用嵌套的 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/

相关文章:

java - 带有 ListView 的自定义适配器中的多个复选框、indexOutOfBounds

java - Facebook Android 应用程序链接打开 Facebook 页面而不是 Play 商店

java - 更改Android中EditText的颜色

printing - Ocaml:打印出 int 列表数组中的元素

java - 动态地将 ArrayList 的值设置为变量

java - 如何将对象添加到对象数组列表中的数组列表?

java - 关于StyledDocument和JTextPane的关系以及接口(interface)的正确使用问题

java.lang.NoSuchFieldError : ACCEPT_CASE_INSENSITIVE_VALUES

java - 哈希表 "method put() is undefined for the type HashMap"

java - 哪种方法更好地比较方法检查中的值或检查它是否存在于数组中?