0

我正在尝试根据用户给出的日期返回有患者的医生列表。但是每次我运行该方法时,它都会返回所有医生的列表,而不是被过滤掉。

主要代码

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;
}

我已经初始化了 2 名患者,即患者 1 和患者 2。患者 1 的医生名为 dr.lee,患者 2 的医生名为 dr.james。首先,我为患者 1 输入以下信息,然后我一无所有地离开了患者 2(现在)。

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
4

2 回答 2

0

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

于 2013-07-29T19:44:48.560 回答
0

我没有要重现的所有代码,但我会首先关注 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;
}

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

于 2013-07-29T05:31:18.323 回答