2013-04-03 74 views
0
public boolean horizontal(Populate a, int[][][] ar, int row, int col, int dep) 
    { 
     ar = new int[6][6][6]; 
     a.pop(ar); 
     for(dep=0;dep<6;dep++) 
     { 
      for(col=0;col<6;col++) 
      { 
       for(int count=0;count<5;count++) 
       {  
        int num = ar[row][col][dep]; 
        int num1 = ar[row+1][col][dep]; 
        if(num==num1) 
        { 
         count1++; 
        } 
        row++; 

       } 

      } 

     } 
     if(count1==5) 
      return true; 
     else 
      return false; 
    } 

這段代碼應該掃描一個水平6行的3D數組(如老虎機),如果是,則返回true,否則返回false。它編譯時會得到一個ArrayOutOfBoundsException:6,當我嘗試運行它時。ArrayIndexOutOfBoundsException:6

for(int count=0;count<5;count++) 

即使我嘗試改變上面是這樣的下面(如在剛剛降低環路走多遠)這條線,但仍超出界限的。

for(int count=0;count<2;count++) 

任何建議或解決方案,讚賞。謝謝。

這是我稱之爲方法的地方,如果有幫助的話。

public class runCheck 
    { 
     public static void main(String[] args) 
     { 
      Populate ch = new Populate(); 
      int[][][] ar = new int[6][6][6]; 
      ch.pop(ar); 
      ArrayList al = new ArrayList(); 
      scan a = new scan(); 
      boolean abool = a.horizontal(ch,ar,0,0,0); 
      if(abool==true) 
       al.add(true); 
     } 
    } 
+0

顯示ArrayIndexOutOfBounds時,這意味着您的數組上的索引超出了初始化的大小。 –

+0

當你需要分配或訪問數組,並檢查它會在哪裏遇到異常時,回顯每個索引 –

+0

@BlackMaggie Maggie對不起,但是你是什麼意思**回顯**每個索引? – user2238469

回答

0

。我不知道你的完整代碼,你如何調用這個方法,我假設的問題是,在這些線路之一

INT NUM = AR [行] [COL ] [DEP]; int num1 = ar [row + 1] [col] [dep];

row ++;

變量行可能會超過5拋出一個數組越界異常。