【问题标题】:Second record doesnt get stored in arraylist第二条记录没有存储在数组列表中
【发布时间】:2013-04-29 00:05:47
【问题描述】:

我有一个数组列表,其中记录存储为对象。 在另一种形式中,我允许用户输入一个 id 并使用相应的 id 检索该记录的数据。

我的问题是,我只能检索一条记录,这意味着只有我存储在数组列表中的第一条记录。

如果我输入第二条记录并且尝试使用 id 搜索记录,我会收到消息“无效 id”,这是我分配的消息,以确保用户不会输入无效 id。

这是我用来将对象存储到数组列表中的代码:-

patient_class patients=new patient_class(firstname,lastname,initials,gender,birthday,birthmonth,birthyear,contactnumber,address,bloodgroup,patientid);

           patientlist.add(patients);

这是我检查arraylist是否包含id的代码。

public boolean checkrecord(ArrayList<patient_class>patients,String search)
    {

         for(patient_class patient : patients)
         {
        if(patient.getid().contains(search))
        {
            return true;
        }

    }    
    return false;
    }

如果这是真的,我已经创建了一个单独的构造函数来查找给定 ID 的记录。

这是代码:-

public patient_class searchrecord(ArrayList<patient_class> patients, String search)
 {


        for(patient_class patient: patients) //used  enhanced for loop


            if(patient.getid().equals(search))
            {

                return patient;

            }
        else
            {
            return null;
            }
        return null;
        }

为什么我只能在 arraylist 中输入一条记录而不是 2 条记录?当我输入第二条记录并单击注册时,我的程序显示“成功注册”,但我无法搜索该记录,但我可以使用我制作的另一种方法删除该记录。

做错了什么?

【问题讨论】:

    标签: java arrays object arraylist store


    【解决方案1】:

    这就是问题所在:

    for(patient_class patient: patients) //used  enhanced for loop
        if(patient.getid().equals(search))
        {
            return patient;
        }
        else
        {
            return null;
        }
    return null;
    

    由于您的else 块,如果第一个 患者与您正在寻找的患者不匹配,您将返回null,而不是寻找其他匹配。您应该摆脱 else 块。我还会添加大括号以使控制流更清晰:

    for (patient_class patient : patients) {
        if (patient.getid().equals(search)) {
            return patient;
        }
    }
    // Only return null if we've checked *all* patients
    return null;
    

    此外,我强烈建议您开始遵循 Java 命名约定,将 patient_class 重命名为 Patient 并将 getid 方法重命名为 getId:

    for (Patient patient : patients) {
        if (patient.getId().equals(search)) {
            return patient;
        }
    }
    return null;
    

    【讨论】:

    • 谢谢,搞定了。我会接受建议并将我的变量名称更改为更容易理解的名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    相关资源
    最近更新 更多