2014-11-30 5 views
-3

크로스 워드 퍼즐을 해결해야하고 그 중 하나는 퍼즐에 단어를 넣는 것입니다. 나는 그것을 실행할 때 는하지만, 나는 다음과 같은 오류가 발생합니다 :java.lang.ArrayIndexOutOfBoundsException : 18

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 18 
at CrosswordPuzzleSolver.setWord(CrosswordPuzzleSolver.java:224) 

이 내 코드입니다 :

public static char[][] setWord(int[] gridSpecEntry, String wordsSpecEntry, 
     char[][] grid) { 
     if (wordsSpecEntry.length()>0&&wordsSpecEntry.length()==gridSpecEntry[2]) 
     { 
     int y = gridSpecEntry[0]; //y-coordinate 
     int x = gridSpecEntry[1]; //x-coord 
     int w = gridSpecEntry[2]; //length of word 
     int r = gridSpecEntry[3]; //horizontal or vertical 
     if (r == 0) { //if is 0, you need to put in the word horizontal 
      for (int b = 0; b < wordsSpecEntry.length(); b++) { 
       grid[y][x + b] = wordsSpecEntry.charAt(b); //line 224 
      } 
     } else { 
      for (int a = 0; a < wordsSpecEntry.length(); a++) { 
       grid[y + a][x] = wordsSpecEntry.charAt(a); 
      } 
     } 
    } 
    return grid; 
} 

누군가가 제발 도와 드릴까요?

+2

'X + b'와'Y + A'는 아마 당신의 문제입니다. –

+0

어떤 입력에 대해이 오류가 발생합니까? –

+0

SCHWIMMBAD에 대한 오류가 발생합니다 – eva

답변

1

그리드 변수가 문자열보다 작은 것 같습니다.

나는 아직 작업 공간에서 테스트하지만 시도하지 않은 :

for (int b = 0; b < wordsSpecEntry.length() && x+b < grid[y].length(); b++) 
관련 문제