我需要打印一个包含重复单词的数组。我的数组已经可以工作,但我不知道如何正确计算单词数。我已经知道,当我的索引计数器 (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/