2013-04-03 2 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 (슬롯 머신과 같은)을 스캔하기로되어 있고 그렇지 않으면 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];

로우 ++;

변수 행이 5보다 많아 배열 예외를 벗어날 수 있습니다.

관련 문제