我有一种方法可以根据患者的优先级将患者添加到正确的索引中。但是,当我添加多个人时,似乎不会添加。我不太确定我的添加方法中缺少什么。我的猜测是 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());
}
如果我运行这个测试用例,由于某种原因我会得到 numWaiting 1... 我在这段代码中哪里可能出错了??
最佳答案
在for
周期之后,如果患者的优先级低于现有患者,您就不会添加任何患者。
一旦您在列表中添加了患者,您就应该从该方法返回
;如果您到达方法的末尾,则意味着新患者的优先级最低,您应该将他添加到列表的末尾。
关于java - 使用 for 循环将对象添加到正确索引中的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55670646/