计数[CORRECT]时数组超出范围

时间:2014-12-05 20:59:56

标签: java arrays printing indexoutofboundsexception

我需要打印一个包含重复单词的数组。我已经有我的阵列工作,但我无法弄清楚如何正确计算单词。我已经知道当我的索引计数器(i)为49时,以及当(i)想要计数到50时,我得到错误但我不知道任何其他方法来调整我的方法来工作。你能帮我么?任何帮助将不胜感激!

这是我的阵列:

蓝色蓝色蓝色蓝色蓝色蓝色蓝色蓝色蓝色蓝色蓝色蓝色蓝色棕色绿色 绿色绿色绿色绿色绿色绿色柠檬柠檬柠檬柠檬柠檬丁香丁香 橙色橙色红色红色红色红色红色红色红色红色红色红色白色白色白色 白色黄色黄色黄色

已修正的代码

public static void printWordCount(String[] z) 
{
    System.out.println("THERE ARE " + wordTotal + " WORDS IN THE FILE");
    System.out.println("WORD W/ COUNT:");

    int i = 0;
    int count = 0;

    while(i < z.length - 1) {
        if (z[i].equalsIgnoreCase(z[i+1])) {
            i++;
            count++;
        }
        else if (!z[i].equalsIgnoreCase(z[i+1]) || i == z.length - 1) {
            count++;
            System.out.println(z[i] + " / " + count);
            i++;
            count = 0;
        }
    }
    count++;
    System.out.println(z[i] + " / " + count);
}

这是我的输出:

文件中有50个单词

WORD W / COUNT:

蓝色/ 13

brown / 1

绿色/ 8

lemon / 6

lilac / 2

orange / 2

红色/ 10

白/ 5

黄色/ 3

1 个答案:

答案 0 :(得分:3)

您的条件允许i到达z.length - 1。 然后z[i].equalsIgnoreCase(z[i+1])将您带出数组范围,因为i+1 == z.length

如果您希望将i元素与i+1元素进行比较,请将条件更改为:

while(i < z.length - 1) 

然后你应该在>循环之后添加

        count++;
        System.out.println(z[i] + " / " + count);

打印最后一个单词的出现次数。