Добавление объекта в ArrayList в правильном индексе с помощью цикла for - PullRequest
1 голос
/ 14 апреля 2019

У меня есть способ добавить пациента к правильному индексу в зависимости от его приоритета.Однако, кажется, что, когда я добавляю больше чем одного человека, это не добавляется.Я не слишком уверен, что мне не хватает в моем методе добавления.Я думаю, что с оператором if-else что-то не так, но я не могу точно определить, в чем проблема.

public void addPatient(Patient sickPerson)
{
    int lim = patients.size();

    if (patients.isEmpty()) //if empty
    {
        patients.add(sickPerson);
    }
    else //if not empty
    {
        for (int i = 0; i < lim; i++) 
        {
        if (patients.get(i).compareTo(sickPerson) > 0) 
            // if the sickperson is more important...
            {
                patients.add(i, sickPerson);
            } 

        else if (patients.get(i).compareTo(sickPerson) == 0)
            // if the sickperson's priority is the same, 
            {
                patients.add(i + 1, sickPerson);
            }
        else 
            {
                continue;
            }
        }
    }

}

@Test
public void getNumWaitingTest() {

    WaitingRoom a = new WaitingRoom();
    Patient b = new Patient("name", "bad", 1, 1);
    Patient c = new Patient("name2", "bad2", 2, 2);

    a.addPatient(b);
    a.addPatient(c);

    assertEquals(2, a.getNumWaiting());
}

и если я выполню этот тестовый пример, я получу 1 для numWaiting по какой-то причине ... где я мог ошибиться в этом коде ??

1 Ответ

2 голосов
/ 14 апреля 2019

После цикла for вы не добавляете ни одного пациента, если у него более низкий приоритет, чем у существующих.

Как только вы добавите пациента в список, вы должны return из метода;если вы достигли конца метода, это означает, что новый пациент имеет самый низкий приоритет, и вы должны добавить его в конец списка.

...