ArrayIndexOutOfBounds抛出异常

时间:2014-11-11 12:57:56

标签: java exception

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。问我是否需要更多信息回复,谢谢

1 个答案:

答案 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]);