2015-05-31 76 views
0

我有我的代碼是這樣一個過程:爲什麼我會收到「ArrayIndexOutOfBoundsException: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); 
} 
在我的項目

,兩班將訪問此過程中,當第一類訪問該程序能正常工作,但是當第二類訪問該程序,這表明此錯誤消息:

java.lang.ArrayIndexOutOfBoundsException:0

我怎樣才能解決呢?

我知道問題是當第二類試圖訪問jumedge[0],但我很困惑爲什麼第一類它可以正確訪問它?

+3

因爲您試圖訪問不包含任何元素的數組的第一個元素。 – Stultuske

回答

1

jumedge數組的長度取決於傳遞給setawal的參數sizes的值。如果您通過0,該陣列將爲空,並且jumedge[0]將拋出異常。

這解釋了爲什麼某些調用此方法會引發異常而其他調用不會。

順便說一句,如果你只使用jumedge數組的第一個元素,你不需要它是一個數組。一個字符串就足夠了。我不知道getsub方法對jumedge數組有什麼作用,但由於您只設置了jumedge[0],所以您可以將單個字符串傳遞給該方法。

相關問題