public Pasient[] finnPasient(String dato)
{
int j = 0;
Pasient[] p = new Pasient[j];
for(int i = 0; i < pasienter.length; i++)
{
if(pasienter[i] != null && pasienter[i].getFødselsdato().equals(dato))
{
p[j] = pasienter[i];
j++;
}
}
if(j == 0)
return null;
else
return p;
}
这是我的方法。我想我知道什么是错的,但我不知道如何解决它。我认为arraylength在循环运行时不会更新。对于我的测试,Pasienter.length总是100。问我是否需要更多信息回复,谢谢
答案 0 :(得分:6)
int j = 0;
Pasient[] p = new Pasient[j];
j
为0,p
根本没有元素,因此位于索引0的第一个元素超出范围,这可能发生在以下行:
p[j] = pasienter[i];
↑
当您撰写j++
时,此不会放大您已创建的数组。请记住,数组的大小无法更改。
由于您不知道数组应该多长时间,我建议您阅读ArrayList
并执行以下操作:
ArrayList<Pasient> p = new ArrayList<>();
然后,
p.add(pasienter[i]);