java - 计数时数组越界[正确]

标签 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 个单词

字数:

蓝色/13

棕色/1

绿色/8

柠檬/6

紫丁香/2

橙色/2

红色/10

白色/5

黄色/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);

打印最终单词出现的次数。

关于java - 计数时数组越界[正确],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27324596/

相关文章:

java - 如何在主线程仍在运行时使用线程运行另一个 JFrame

javascript - JS - 构造函数中的 JSON/ARRAY 传递变量(自定义库)

java - 创建的 url 有效,但当应用程序发送时会遇到错误

java.sql.SQLException : No suitable driver found for url+dbName, UserId=?&password=?

ruby-on-rails - 在 ruby​​ on rails 中删除数组的替代元素

javascript - 从动态数组中删除项目

c++ - 非类类型成员打印错误请求 'char'

html - 从 HTML 横向打印

c# - 从Windows打印设置对话框保存打印设置

java - Jersey 客户端响应字符串编码