2014-09-08 6 views
-3

나는 단어를 취해 문자를 다차원 배열에 저장하는 코드를 작성하려고합니다. 지금 당장은 배열 인덱스 예외를 벗어나고 있는데 이유를 모르겠습니다. 나는 다음과 같은 입력 함께 테스트입니다 :Java - 내 ArrayIndexOutOfBoundsException의 출처는 어디입니까?

2 
SEND 
MORE 
MONEY 

(난 단지 '기타'배열에 'SEND'과의 편지를 얻기 위해 노력하고있어.)

가 나는 경우 ArrayIndexOutOfBoundsException 무엇입니까 : 2 표시된 줄에.

Scanner keyboard = new Scanner(System.in); 
int n = keyboard.nextInt(); 
keyboard.nextLine(); 
String[] addends = new String[n]; 
for (int i = 0; i < n; i++) { 
    addends[i] = keyboard.nextLine(); 
} 
String sum = keyboard.nextLine(); 

int maxWordLength = 0; 
for (int i = 0; i < n; i++) 
    if (addends[i].length() > maxWordLength) 
     maxWordLength = addends[i].length(); 

char[][] letters = new char[maxWordLength][n]; 
for (int i = 0; i < n; i++) 
    for (int j = 0; j < addends[i].length(); j++) 
     letters[i][j] = addends[i].charAt(j);  //Getting exception here. 

//Test that letters were added correctly 
for (int i = 0; i < n; i++) 
    for (int j = 0; j < addends[i].length(); j++) 
     System.out.print(letters[i][j]); 
+2

질문에 포함되지 않은 스택 추적에 표시된 줄에서 오는 것입니다. – EJP

+0

디버깅을 단계별로 시도 했습니까? 아니면 디버그 출력을 추가 했습니까? – MrTux

+0

@EJP 코드의 주석으로 라인이 표시됩니다. 걱정하지 마라, 나는 나의 실수를 깨달았다. 그러나 겸손하게 해줘서 고마워. –

답변

3
char[][] letters = new char[maxWordLength][n]; 
for (int i = 0; i < n; i++) 
    for (int j = 0; j < addends[i].length(); j++) 
     letters[i][j] = addends[i].charAt(j);  

그것은 검사에 의해 분명하다 첫 번째 줄은

char[][] letters = new char[n][maxWordLength]; 

하거나 다른 당신이 i 다음과 같은 루프에서 혼합 j을 가지고 있어야한다 : 여기 내 코드입니다.

+1

그래, 내가 어떻게 그걸 즉시 알지 못했는지 모르겠다. 감사 –

0
char[][] letters = new char[maxWordLength][n]; 
for (int i = 0; i < n; i++) 
    for (int j = 0; j < addends[i].length(); j++) 
     letters[i][j] = addends[i].charAt(j); 

조건 i와 j의 조건이 일치하지 않습니다. 나는 가중치 [i] .length()에서 멈춰야하고, j는 반드시 멈춰야 만합니다.

관련 문제