有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

线程“main”java中出现异常。lang.ArrayIndexOutofBounds异常:65

我有以下基本Java代码:

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();
    }
}

}

当我尝试运行它时,会收到以下错误消息:

线程“main”java中的run:异常。lang.ArrayIndexOutofBounds异常:65

你可以猜到,我找不到错误。但是,请不要直接告诉我这个问题,你能告诉我为什么我会收到这个信息吗?这和空间有关吗

非常感谢您抽出时间


共 (2) 个答案

  1. # 1 楼答案

    你必须更换

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

    为了

            if ((let >= 'A') & (let <= 'Z')) {
                contadorLetras[let - 'A' ]++;
            }
    
  2. # 2 楼答案

    这看起来像是印刷错误contadorLetras[let='A']。你知道'A'的int值是多少吗

    提示:异常stacktrace告诉您:
    JAVAlang.ArrayIndexOutofBounds异常:65

    这意味着上面的代码显示您正在尝试访问contadorLetras['A'],它与contadorLetras[65]相同,远远超出了数组的范围

    相反,去掉=并将其更改为-,因为let - 'A'是您想要的:

    contadorLetras[let - 'A']++: