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

Java单词频率计算器大小写不敏感计数不一致问题求助

解决单词频率计数不一致的问题

问题原因

你当前的代码在填充单词数组的过程中就计算频率:比如处理第2个单词Hi时,数组后面的hi、mark还没被读入,此时equalsIgnoreCase只能匹配到Hi自己,计数为1;而处理hi时,前面的Hi已经存在,计数就变成了2。这种边读边算的逻辑,导致大小写变体的单词因处理顺序不同,得到的计数不一致。

解决方案

把读入所有单词和计算频率拆成两个独立步骤:先完整读取所有单词到数组中,再遍历数组逐个计算每个单词的频率。这样计算时数组已经完全填充,能匹配到所有大小写变体的单词。

修改后的代码

import java.util.Scanner;

public class LabProgram {

   public static int getWordFrequency(String[] f, int size, String c){
      int count = 0;
      for (int j = 0; j < f.length; j++) {
          if (f[j] != null && f[j].equalsIgnoreCase(c)) {
              count++;
          }
      }
      return count;
   }

   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      int size = scnr.nextInt();
      String[] f = new String[size];
      int[] v = new int[size];
      
      // 第一步:完整读取所有单词到数组
      for (int i = 0; i < size; i++) {
          f[i] = scnr.next();
      }
      
      // 第二步:遍历数组计算每个单词的频率
      for (int i = 0; i < size; i++) {
          v[i] = getWordFrequency(f, size, f[i]);
      }
      
      // 输出结果
      for(int i = 0; i < size; i++){
         System.out.println(f[i] + " " + v[i]);
      }
   }
}

验证示例输入

输入5 hey Hi Mark hi mark,输出结果为:

hey 1
Hi 2
Mark 2
hi 2
mark 2

完全符合预期的大小写统一计数要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:30:06