为什么我得到“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
数组的长度取决于传递给 setawal
的 sizes
参数的值。如果传递 0
,数组将为空,jumedge[0]
将抛出异常。
这解释了为什么对此方法的一些调用会抛出异常,而另一些则不会。
顺便说一句,如果您只使用 jumedge
数组的第一个元素,则不需要它是一个数组。一个 String 就足够了。我不知道 getsub
方法对 jumedge
数组做了什么,但由于您只设置了 jumedge[0]
,您可以将单个字符串传递给该方法。
我的代码中有这样一个过程:
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
数组的长度取决于传递给 setawal
的 sizes
参数的值。如果传递 0
,数组将为空,jumedge[0]
将抛出异常。
这解释了为什么对此方法的一些调用会抛出异常,而另一些则不会。
顺便说一句,如果您只使用 jumedge
数组的第一个元素,则不需要它是一个数组。一个 String 就足够了。我不知道 getsub
方法对 jumedge
数组做了什么,但由于您只设置了 jumedge[0]
,您可以将单个字符串传递给该方法。