我的代码中有一个这样的程序:
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]
时,但我很困惑为什么第一堂课可以正确地访问它?
答案 0 :(得分:1)
jumedge
数组的长度取决于传递给sizes
的{{1}}参数的值。如果您传递setawal
,则数组将为空,0
将抛出异常。
这解释了为什么对此方法的某些调用会抛出异常而其他调用则不会。
顺便说一句,如果您只使用jumedge[0]
数组的第一个元素,则不需要它作为数组。单个String就足够了。我不知道jumedge
方法对getsub
数组的作用,但由于您只设置了jumedge
,因此您可以将单个字符串传递给该方法。