2015-12-29 108 views
1

我有這個基本的Java代碼:異常線程 「main」 java.lang.ArrayIndexOutOfBoundsException:65

class Rueda { 
public static void main (String[] args) { 
    String frase[] = {"TODA CUESTION TIENE DOS PUNTOS DE VISTA", "EL EQUIVOCADO Y EL NUESTRO", 
     "TODAS LAS MUJERES TIENEN ALGO HERMOSO", "AUNQUE SEA UNA PRIMA LEJANA", 
     "SE ESTA MURIENDO GENTE", "HE OIDO HABLAR TAN BIEN DE TI", "QUE CREIA QUE ESTABAS MUERTO", 
     "RECUERDA SIEMPRE QUE ERES UNICO", "EXACTAMENTE IGUAL QUE TODOS LOS DEMAS", 
     "TODO TIEMPO PASADO FUE ANTERIOR"}; 
    int[] contadorLetras = new int[26]; 
    for (int contador = 0; contador < frase.length; contador++) { 
     String current = frase[contador]; 
     char[] letras = current.toCharArray(); 
     for (int contador2 = 0; contador2 < letras.length; contador2++) { 
      char let = letras[contador2]; 
      if ((let >= 'A') & (let <= 'Z')) { 
       contadorLetras[let='A']++; 
      } 

     } 
     for (char contador3 = 'A'; contador3 < 'Z'; contador3++) { 
      System.out.print(contador3 + ": " + contadorLetras[contador3 - 'A'] + " "); 
     } 
     System.out.println(); 
    } 
} 

}

而且,當我嘗試運行它,我得到這個錯誤消息:

run:異常線程「main」 java.lang.ArrayIndexOutOfBoundsException:65

而且,正如你可以猜到,我無法找到錯誤。但是,請不要直接告訴我這個問題,能否告訴我爲什麼我會收到此消息?它與空間有什麼關係?

非常感謝您的時間。

+0

' contadorLetras [let ='A']'不是一個好主意。 'contadorLetras [let - 'A']''怎麼樣? –

回答

3

這看起來像一個印刷錯誤。 contadorLetras[let='A']。你知道'A'的整數值是什麼嗎?

提示:您的異常堆棧跟蹤告訴你:
java.lang.ArrayIndexOutOfBoundsException:

這意味着你上面的代碼顯示您試圖訪問contadorLetras['A']這是一樣的contadorLetras[65]這遠遠超出你陣列的範圍。

相反,擺脫了=,並且將其更改爲-,因爲let - 'A'是你想要什麼:

contadorLetras[let - 'A']++: 
0

您必須更換

 if ((let >= 'A') & (let <= 'Z')) { 
      contadorLetras[let='A']++; 
     } 

 if ((let >= 'A') & (let <= 'Z')) { 
      contadorLetras[let - 'A' ]++; 
     } 
相關問題