2015-12-29 200 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' ]++; 
     } 
相关问题