当前位置: 首页 > 知识库问答 >
问题:

使用方法筛选arraylist

暨弘毅
2023-03-14

我正试图返回一份基于用户给定日期的患者名单。但每次我运行该方法时,它都会返回所有医生的列表,而不是经过筛选。

主屏幕上的代码

public void printDoctorsWithPatientsOnDate() throws ParseException
{
    ArrayList<String> docs = new ArrayList();
    System.out.print("Enter the date(mm-dd-yyyy): ");
    Date dt = new SimpleDateFormat("MM-dd-yyyy").parse(sc.nextLine());
    docs = app.getDoctorsWithPatientsOnDate(dt);
    for(String i : docs)
    {
    System.out.println(i);
    }
}

过滤方法

public ArrayList<String> getDoctorsWithPatientsOnDate(Date date)
{
    ArrayList<String> doctors = new ArrayList();
    for(Patient i : patientList)
    {
        if(i.searchDatesForDoc(date) == true);
        {
            doctors.add(i.getDoctorName());
        }
    }
    return doctors;
}

搜索患者日期的方法

public boolean searchDatesForDoc(Date date){
    for(Date i : datesOfVisit)
    {
        if(i.equals(date))
        {
        return true;
        }
    }
    return false;
}

我初始化了两个患者,即patient1和patient 2。病人1的医生叫李医生,病人2的医生叫詹姆斯医生。首先,我为patient1输入以下信息,而patient2现在什么都没有。

Enter the Patient's name: patient1
Enter the assessment: alz
Enter the date of Visit(mm-dd-yyyy): 10-02-2010

当我拿到医生名单时,问题就来了。即使日期是错误的,它仍会继续打印名单上的每一位医生。

Enter the date(mm-dd-yyyy): 11-20-2012
dr.lim
dr.james

共有2个答案

凌联
2023-03-14

我没有所有的代码可以复制,但我会首先关注searchDatesForDoc方法。试试这个:

public ArrayList<String> getDoctorsWithPatientsOnDate(Date date)
{
    ArrayList<String> doctors = new ArrayList();
    for(Patient i : patientList)
    {
        System.out.println("Current patient is: " + i.getPatientName());
        if(i.searchDatesForDoc(date) == true);
        {
            doctors.add(i.getDoctorName());
        }
    }
    return doctors;
}

public boolean searchDatesForDoc(Date date){
    for(Date i : datesOfVisit)
    {
        if(i.equals(date))
        {
            System.out.println("\tVisited on day: " + i);
        return true;
        }
    }
    return false;
}

当您在运行时添加这两行时,它将打印患者姓名,后跟患者就诊的天数。首先要检查的是患者是否确实在列出的日期就诊。如果没有,那么你的问题就在那里。使用调试器跟踪代码的每个步骤,这将更容易调试。

墨寂弦
2023-03-14

出于某种未知的原因(无论如何对我来说),我给出的被接受的答案被版主删除了。问题已经解决了。问题是他在if语句后面加了一个分号。

 类似资料:
  • 我有一个包含一些字符串值的列表。我想与另一个字符串进行比较来迭代列表。只有当另一个字符串与列表中的任何元素都不匹配时,那么我才应该进入循环。我试过下面这样的东西,但没有效果。在Java8中有没有其他替代方法可以实现同样的功能? 注意:在循环中,我将向同一列表中添加更多的元素。因此,为了避免,我使用if条件进行验证。

  • 我的页面中有一个名为“search_table”的DataTable。我在表中有一个附加的标题行,它具有不同的筛选选项(dropdown、text、date_pickers)。对于日期列,我有两个datepicker,一个用于min,一个用于max。我可以根据datepickers为datatable筛选数据,但有一个问题: 当我选择一个日期时,我的表中的所有行都消失了,我必须点击其中的一个标题(

  • 我有一个带有FireBaseRecyclerAdapter的RecyclerView。当用户开始输入SearchView时,我想用一个名称列表填充RecycerView。 也是对查询进行忽略的方法吗?

  • 应用筛选器之前的示例使用者记录是(在值中查找GP_ID): 当我在kafkaListenerContainerFactory()中按如下方式设置recordFilterStrategy时: KafKareCordvo.ConvertByteBufferToLong正在将bytebuffer值转换为long值。 但是,当它被Kafka听众按以下方式消费时: 这将返回删除我筛选的字段值的记录:“gp_

  • 首先,我试图使选择所有复选框,如果我单击表头中的选择所有复选框,整个表行将选择并显示一个复选框反向消息,即我选择了多少复选框。这里的问题是,如果我单击select all复选框,反向消息不会显示楼上的表,即我选择了多少行。 其次,如果我从任何列中筛选任何数字,相同的数字将显示同一列中有多少行具有相同的数字。如果我选中了所有复选框,那么反向消息将显示我选中了多少行复选框。这里,问题是显示整个表行计数

  • 本文向大家介绍Python使用re模块实现信息筛选的方法,包括了Python使用re模块实现信息筛选的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python使用re模块实现信息筛选的方法。分享给大家供大家参考,具体如下: 背景 平时工作中,我们经常会处理大量的元数据(Raw Data),而一般的文件编辑器只能一次查询一个关键字,这就难以连续的分析元数据,比如分析产品日志文件(lo