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

Why am I getting “ArrayIndexOutOfBoundsException: 0”? (array of string)

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

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);
}

在我的项目中,两个class会访问这个程序,当第一个class访问这个程序时它正常工作,但是当第二个class访问这个程序时,它显示此错误消息:

java.lang.ArrayIndexOutOfBoundsException: 0

我该如何解决?

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

jumedge 数组的长度取决于传递给 setawalsizes 参数的值。如果传递 0,数组将为空,jumedge[0] 将抛出异常。

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

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