java - 出现 ArrayIndexOutOfBoundsException : 97 的运行时错误

标签 java arrays

我遇到错误,有人可以帮我解决吗?我正在尝试打印字符串中出现次数最多的元音。

void vowelCount() {
    int countO = 0 ,countU = 0,countI = 0 ,countA = 0 ,countE = 0  ;
    char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
    int[] count = new int[] {countA,countE,countI,countO ,countU};
    int maxCount = 0;
    char maximumChar = ' ';

    for (int i = 0; i < TEXT.length(); i++) {
        char ch = TEXT.charAt(i);
        if (ch == vowels[0]) {
            countA++;
        }
        if (ch ==  vowels[1]) {
            countE++;
        }
        if (ch ==  vowels[2]) {
            countI++;
        }
        if (ch ==  vowels[3]) {
            countO++;
        }
        if (ch ==  vowels[4]) {
            countU++;
        }


    }

    for( int i = 0; i< vowels.length ; i++) {
        if (count[vowels[i]] > maxCount) {
            maxCount = count[vowels[i]];
            maximumChar = vowels[i];
    }
    }
    System.out.println();
    System.out.println("The most used lowercase vowel is " + maximumChar + " for " + maxCount + " times.");
 }

Arrayindexoutofbound 异常结果,我不太确定我的错误在哪里。试了这么久还是报错。

最佳答案

我想说 count[vowels[i]] 是你的问题。 vowels[i] 不会在 [0..4] 范围内,因此超出了数组的边界。您需要 count[i] 来代替。您可以尝试以下简化代码

void vowelCount() {
    char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
    int[] count = new int[vowels.length];
    int maxCount = 0;
    char maximumChar = ' ';

    for (int i = 0; i < TEXT.length(); i++) {
        char ch = TEXT.charAt(i);
        for (int j=0; j<vowels.length; j++) {
            if (ch == vowels[j]) {
                count[j]++;
                break;
            }
        }
    }

    for (int i = 0; i<vowels.length; i++) {
        if (count[i] > maxCount) {
            maxCount = count[i];
            maximumChar = vowels[i];
        }
    }

    System.out.println();
    System.out.println("The most used lowercase vowel is " + maximumChar + " for " + maxCount + " times.");
}

关于java - 出现 ArrayIndexOutOfBoundsException : 97 的运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54454191/

相关文章:

java - 拒绝访问 - 使用身份验证机制 PLAIN RabbitMQ 队列拒绝登录

C: 删除非字母字符的程序

arrays - 断言数组集。但第一组数组只比较第一个数组

java - Java中的数组列表

java - 如何将两个数组合并成各自的二维数组?

java - sender.send 中应放置哪些内容 - 适用于 Android 的 Google 云消息传递

java - 验证处理时间的有效方法

java - NullPointerException java,即使正在显示值?

c++ - 声明类似于 C 风格的数组 (C++)

javascript - 如何在Javascript中通过多个参数对非常大的数据数组进行排序