为什么我得到“ArrayIndexOutOfBoundsException:0”? (字符串数组)

时间:2015-05-31 10:55:58

标签: java arrays stored-procedures

我的代码中有一个这样的程序:

public void setawal(ArrayList<String> edge, String[] nodeforsub, int sizes){
    size=sizes;
    jumedge=new String[size];
    totalsubedge=new String[size];
    hasiljumedge=new String[size];
    hasilsubedge=new String[size];
    for(int j=0;j<edge.size();j++){
        if(jumedge[0]==null){
            jumedge[0]=edge.get(j);
        }else{
            jumedge[0]=jumedge[0]+":"+edge.get(j);
        }
    }
    urutan=new int[edge.size()];
    for(int i=0;i<edge.size();i++){
        urutan[i]=i;
    }
    node=nodeforsub;
    getsub(size, node, jumedge, totalsubedge, hasilsubedge, urutan);
}

在我的项目中,两个类将访问此过程,当第一个类访问此过程时它正常工作,但当第二个类访问此过程时,它显示此错误消息:

  

java.lang.ArrayIndexOutOfBoundsException:0

我该如何解决?

我知道问题是当第二堂课试图访问jumedge[0]时,但我很困惑为什么第一堂课可以正确地访问它?

1 个答案:

答案 0 :(得分:1)

jumedge数组的长度取决于传递给sizes的{​​{1}}参数的值。如果您传递setawal,则数组将为空,0将抛出异常。

这解释了为什么对此方法的某些调用会抛出异常而其他调用则不会。

顺便说一句,如果您只使用jumedge[0]数组的第一个元素,则不需要它作为数组。单个String就足够了。我不知道jumedge方法对getsub数组的作用,但由于您只设置了jumedge,因此您可以将单个字符串传递给该方法。