You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java单词频率统计程序初始词频计算错误问题求助

问题分析

你的代码核心问题在于边读取单词边计算频率的逻辑错误:当处理第i个单词时,数组wordsList中只有前i+1个元素被赋值,后续元素都是默认的null。此时遍历整个数组统计频率,只能计算到当前单词在已读取部分的出现次数,无法包含后续还未读取的相同单词,这就是初始出现的单词频率计算错误、后续出现的单词能计算正确的原因。

修复后的代码
import java.util.Scanner; 
public class LabProgram {
   public static void main(String[] args) {

      Scanner scnr = new Scanner(System.in);
      int numberWords = scnr.nextInt();
      String[] wordsList = new String[numberWords];
      int[] frequency = new int[numberWords];
      
      // 第一步:先读取所有单词到数组
      for (int i = 0; i < numberWords; ++i) {
         wordsList[i] = scnr.next();
      }
      
      // 第二步:遍历每个单词,统计其在整个数组中的出现次数
      for (int i = 0; i < numberWords; ++i) {
         int count = 0;
         for (int j = 0; j < numberWords; ++j) {
            if (wordsList[i].equals(wordsList[j])) {
               count++;
            }
         }
         frequency[i] = count;
      }
      
      // 第三步:输出结果
      for (int i = 0; i < numberWords; ++i) {
         System.out.println(wordsList[i] + " - " + frequency[i]);
      }
      
   }
}
验证结果

使用你的测试输入:

6 pickle test rick Pickle test pickle

修复后的代码会输出你期望的结果:

pickle - 2
test - 2
rick - 1
Pickle - 1
test - 2
pickle - 2

补充说明:当前代码是大小写敏感的(pickle和Pickle被视为不同单词),如果需要忽略大小写匹配,可以将equals方法替换为equalsIgnoreCase。

内容的提问来源于stack exchange,提问作者redbull_luvr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:18:32